You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

199 lines
6.1 KiB
Dart

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

import 'package:flutter/material.dart';
import '../../../widget/JdButton.dart';
import '../../../services/EventBus.dart';
import '../01_messages/messages_manage.dart';
import '../../../components/doJSON.dart';
import '../../../components/hyxx_data_handle.dart';
import 'dart:convert';
import '../../../res/listContacts.dart';
class ContactAdd extends StatefulWidget {
ContactAdd({@required this.contactIndex, Key key}) : super(key: key);
int contactIndex;
_LoginPageState createState() => _LoginPageState();
}
class _LoginPageState extends State<ContactAdd> {
//List<TextEditingController> listController;
bool changed = false;
void initState() {
// TODO: implement initState
super.initState();
getListFlields();
}
getListFlields() {
//在listContacts2末尾添加一条记录这种方式会导致添加后同时修改被拷贝的记录
// listContacts2.add(listContacts2[widget.contactIndex]);
// widget.contactIndex = listContacts2.length - 1;
//
// listController = List.generate(listContacts2[widget.contactIndex].length, (index) {
// String key = listContacts2[widget.contactIndex].keys.elementAt(index);
// listContacts2[widget.contactIndex][key] = ''; //清空内容
// return TextEditingController();
// });
//在listContacts2末尾添加一条记录
//添加硬数据方式不好若listContacts2的字段修改后便可能导致问题
// var item = {
// "姓名": '张三',
// "登录名称": 'ZhangSan',
// "登录密码": '**********',
// "部门": '办公室',
// "职务": '主任',
// "手机": '133xxxxxxxx',
// "办公电话": '0831xxxxxxx',
// "邮箱": '1234@qq.com',
// "权限": '管理员',
// "备注": '示例用户',
// };
// //map遍历
// //usrMap.forEach((k,v) => print('${k}: ${v}'));
// item.forEach((key, value) {
// item[key] = ''; //清空内容
// });
//在listContacts2末尾添加一条记录动态生成item中的元素
Map item = {};
listContacts2[widget.contactIndex].forEach((key, value) {
item[key] = ''; //为item添加元素
});
listContacts2.add(item);
widget.contactIndex = listContacts2.length - 1;
//setState(() {});
}
//监听登录页面销毁的事件
dispose() {
super.dispose();
if (changed) {
print("writeJSON()");
writeJSON(json.encode(listContacts2), 'listContacts02.json');
} else {
print("removeLast()");
listContacts2.removeLast(); //删除添加的末尾元素
}
eventBus.fire(new UserEvent('登录成功...'));
}
doLogin() async {
Navigator.pop(context); //返回
return;
}
OnTap_messages_manage() {
Navigator.of(context).push(MaterialPageRoute(builder: (context) => MessagesManagePage()));
}
//自定义方法
static onNullFun() {}
Widget getTrail(String key, int index, double widthTrail) {
return Container(
alignment: Alignment(1, 0),
//widthTrail = 400报错360刚能显示300换行260
width: widthTrail,
child: TextField(
//textAlign: TextAlign.right,
style: TextStyle(fontSize: 16),
decoration: InputDecoration(
hintText: '請輸入字段信息',
//border: InputBorder.none, //TextField去掉下划线
contentPadding: EdgeInsets.only(right: 0),
),
//controller: listController[index],
//利用控制器初始化文本
onChanged: (value) {
listContacts2[widget.contactIndex][key] = value;
bFlash = changed = true;
print("ContactAdd bFlash = $bFlash");
},
),
);
}
Widget _getListTile(String key, int index, double widthTrail,
{onTapFun = onNullFun, onLongPressFun = onNullFun, size = 16.0}) {
return ListTile(
//leading: new Icon(Icons.phone),
title: Text('${mapUserInfoText[key]} ', style: TextStyle(fontSize: 16)),
trailing: getTrail(key, index, widthTrail),
contentPadding: EdgeInsets.symmetric(horizontal: 20.0, vertical: 0),
enabled: true,
onTap: () {},
onLongPress: () {},
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("修改联系人"),
centerTitle: true,
),
body: Container(
child: Column(
children: <Widget>[
Expanded(
//Flutter Column套ListView不显示可将ListView用Expanded包裹起来。
// child: ListView.builder(
// itemCount: listFlields.length,
// itemBuilder: _getListTileFields,
// ),
//https://www.it1352.com/2028416.html
//用Map而不是List的Flutter ListView(Flutter listview with Map instead of List)
//listContacts2[widget.contactIndex]
child: ListView.builder(
itemCount: listContacts2[widget.contactIndex].length,
itemBuilder: (BuildContext context, index) {
String key = listContacts2[widget.contactIndex].keys.elementAt(index);
return Column(
children: <Widget>[
_getListTile(key, index, 220.0),
Divider(
height: 1.0,
),
],
);
},
),
),
],
),
),
);
}
//https://www.it1352.com/2028416.html
//用Map而不是List的ListView.builder
//Its a little late but You could also try this. Map values = snapshot.data;
getMap() {
Map values = listContacts2[widget.contactIndex];
return new ListView.builder(
itemCount: values.length,
itemBuilder: (BuildContext context, int index) {
String key = values.keys.elementAt(index);
return new Column(
children: <Widget>[
new ListTile(
title: new Text("$key"),
subtitle: new Text("${values[key]}"),
),
new Divider(
height: 2.0,
),
],
);
},
);
}
}