当用户输入大量信息时,通常会采用TextField列表来解决,这时如果需要对每个TextField进行控制或监听就需要大量的TextEditingController。 这里提供另一种思路,解决大量使用TextEditingController和信息整理困难的问题。 定义一个Map: Map _userInfo; 这个Map作用于所有需要收集用户信息的地方。 使用TextField时这样操作: ////邮箱 TextField( controller: TextEditingController(text: _userInfo['account']), onChanged: (value) { _userInfo['account'] = value; }, ), ////昵称 TextField( controller: TextEditingController(text: _userInfo['nickname']), onChanged: (value) { _userInfo['nickname'] = value; }, ), ////密码 TextField( controller: TextEditingController(text: _userInfo['password']), onChanged: (value) { _userInfo['password'] = value; }, ), 这里全程未单独定义TextEditingController,只使用TextField默认的方法进行控制,且可以获得以下好处: 1.节省大量代码,简化业务逻辑。 2.用户输入完成时即得到一个包含所有信息的Map。 3.输入的内容不会丢失,只要这个Map不被销毁,下次进入(或返回)这个页面时所有内容都在,不用要求用户再次输入,提升用户体验。 第一次发文章,如有问题,欢迎指正。 作者:xSILENCEx 链接:https://juejin.im/post/5d649bfce51d453b1d648314 来源:掘金 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

繼續閱讀

dart null list

減少null判斷情況 https://stackoverflow.com/questions/51036758/flutter-the-method-map-was-called-on-null https://juejin.im/post/5c6d38b1f265da2dcc7feb69 https://cloud.tencent.com/developer/article/1370380 ?? => if null https://blog.csdn.net/ffa_ijj/article/details/85051156 return qres?.map((value) { LinkedHashMap result = json.decode(value["jsonitem"]); return result; })?.first ?? new LinkedHashMap(); 這個判斷方式有個問題,當查詢回來為[],不是null情況下,在.first會出錯,因為 “No element"會出錯,但.toList()會正確,故改回 if (qres == null || qres.isEmpty) return new Member(); // 待確定是否出錯 var resmap = qres.first; return new Member.fromJson(json.decode(resmap["jsonitem"]));

繼續閱讀

Very Important! {"107年工作":{"zhangqi":[{"name":"王大明1"},{"name":"孫小明1"}],"chaojiangeren":[{"name":"nnn1","addr":"aaa1"},{"name":"nnn2","addr":"aaa2"}]},"108年法會":{"zhangqi":[{"name":"王大明1"},{"name":"孫小明1"}]}} zhangqi : [ …. ] chaojiangeren: [ …. ] zhangqi : [ {….}, {….} ] chaojiangeren: [ {….}, {….} ] Can’t have \' or \" If have this, json.decode can’t List List=> ListList=> List List<ItemName> zhangqi = List<ItemName>(); zhangqi.add(new ItemName(name:"王大明1")); zhangqi.add(new ItemName(name:"孫小明1")); List<ItemNameAddr> chaojiangeren = List<ItemNameAddr>(); chaojiangeren.add(new ItemNameAddr(name:"nnn1", addr:"aaa1")); chaojiangeren.add(new ItemNameAddr(name:"nnn2", addr:"aaa2")); class ItemName { String name; ItemName({ this.name }) ; ItemName.fromJson(Map<String, dynamic> json) : name = json['name']; Map toJson() => {"name": name }; //給json.

繼續閱讀

作者的圖片

Sue boy

Sueboy Can support You

CIO

Taiwan