修改选择器样式

This commit is contained in:
czz
2025-06-06 09:18:06 +08:00
parent 682728eb1e
commit bc86cf7d78
94 changed files with 3929 additions and 2299 deletions

View File

@@ -0,0 +1,155 @@
import 'package:ef/ef.dart';
import 'package:flutter_city_picker/model/address.dart';
import 'package:flutterflow_ui/flutterflow_ui.dart';
import 'package:json_annotation/json_annotation.dart';
import 'package:vbvs_app/controller/mh_controller/user_data.dart';
import 'package:vbvs_app/controller/mh_controller/muser_info_controller.dart';
part 'address_controller.g.dart';
@JsonSerializable()
class AddressModel {
//版本id
String? province; //省份
String? city; //市
String? county; //区
String? street; //街道
String? detail; //详细信息
String? name; //名字
String? phone; //手机号
bool? ischecked = false; //是否默认
int currentType = 0;
String? all_address;
@JsonKey(ignore: true)
List<AddressNode>? addressList = [];
AddressModel();
static AddressModel fromJson(Map<String, dynamic> json) =>
_$AddressModelFromJson(json);
Map<String, dynamic> toJson() => _$AddressModelToJson(this);
}
class AddressController extends GetControllerEx<AddressModel> {
AddressController() {
attr = GetModel(AddressModel()).obs;
}
Future<String> updateAddress(
Map<String, dynamic> address, AddressModel model) async {
if (model.addressList != null && model.addressList!.isNotEmpty) {
if (model.addressList!.length > 0) {
address["province"] = model.addressList![0].name; // 第一个元素为省
}
if (model.addressList!.length > 1) {
address["city"] = model.addressList![1].name; // 第二个元素为市
}
if (model.addressList!.length > 2) {
address["county"] = model.addressList![2].name; // 第三个元素为区
}
if (model.addressList!.length > 3) {
address["street"] = model.addressList![3].name; // 第四个元素为街道
}
}
address['detail'] = model.detail;
address['name'] = model.name;
address['phone'] = model.phone;
address['isChecked'] = model.ischecked;
try {
final data = await ef.client.rpc("get_now_datetime");
final response = await ef.client.from("app_user_address").update({
'province': address["province"],
'city': address["city"],
'county': address["county"],
'street': address["street"],
'detail': address["detail"],
'name': address["name"],
'phone': address["phone"],
'ischecked': address['isChecked'] ? 1 : 0,
'update_time':
DateFormat("yyyy-MM-dd HH:mm:ss").parse("$data").toString(),
}).eq("id", address['id']);
} catch (e) {
print('Error fetching repairs: $e');
return e.toString();
}
return '';
}
addAddress(AddressModel model) async {
try {
final MUserInfoController userInfoController =
Get.find<MUserInfoController>();
UserModel user = userInfoController.model.user!;
// 设置省市区街道名称
if (model.addressList != null && model.addressList!.isNotEmpty) {
if (model.addressList!.length > 0)
model.province = model.addressList![0].name; // 第一个元素为省
if (model.addressList!.length > 1)
model.city = model.addressList![1].name; // 第二个元素为市
if (model.addressList!.length > 2)
model.county = model.addressList![2].name; // 第三个元素为区
if (model.addressList!.length > 3)
model.street = model.addressList![3].name; // 第四个元素为街道
}
// 查询数据库是否已有该用户的地址
final existingAddresses = await ef.client
.from('app_user_address')
.select()
.eq('user_id', user.uid!);
// 如果没有地址,将新增地址默认选中
if (existingAddresses.isEmpty) {
model.ischecked = true;
} else if (model.ischecked == true) {
// 如果新地址被选中,将其他地址的 `ischecked` 字段设为 `0`
await ef.client
.from('app_user_address')
.update({'ischecked': 0}).eq('user_id', user.uid!);
}
// 添加新地址
final response = await ef.client.from('app_user_address').insert({
'province': model.province,
'city': model.city,
'county': model.county,
'street': model.street,
'detail': model.detail,
'name': model.name,
'phone': model.phone,
'ischecked': model.ischecked! ? 1 : 0,
'user_id': user.uid,
});
} catch (e) {
print(e);
}
}
Future<List<AddressNode>> getData({int? level, int? pid}) async {
// 构建查询
var query = ef.from("app_area_city").select();
// 如果 pid 不为 null添加 pid 的条件
if (pid != null) {
query = query.eq("pid", pid);
}
if (level != null) {
query = query.eq("deep", level);
}
List arr = await query;
List<AddressNode> addressNodes = arr.map((item) {
return AddressNode.fromJson({
"name": item["ext_name"], // ext_name 对应 name
"code": item["id"], // id 对应 code
"letter": item["pinyin_prefix_upper"], // pinyin_prefix_upper 对应 letter
});
}).toList();
return addressNodes;
}
}