当用户输入大量信息时,通常会采用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
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。