修改选择器样式
This commit is contained in:
155
lib/controller/mh_controller/address_controller.dart
Normal file
155
lib/controller/mh_controller/address_controller.dart
Normal 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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user