Flutter 如何从颤振中的initState()块中获取变量的值?

Flutter 如何从颤振中的initState()块中获取变量的值?,flutter,dart,Flutter,Dart,我使用widget.storage.readCounter()函数获得了initState()中存储在Documents目录中的值。我想获取该值并将其作为初始值存储在TextEditingController中。但是我无法从initState()块中获取值。如何从initState()块中获取值?这是我的全部代码: class _UserForm extends State<UserForm> { TextEditingController uid; static St

我使用widget.storage.readCounter()函数获得了initState()中存储在Documents目录中的值。我想获取该值并将其作为初始值存储在TextEditingController中。但是我无法从initState()块中获取值。如何从initState()块中获取值?这是我的全部代码:

   class _UserForm extends State<UserForm> {
  TextEditingController uid;
  static String userid;
  @override
  void initState() {
    super.initState();
    widget.storage.readCounter().then((int value) {
      userid = value.toString();
      /*setState(() => {
            userid = value.toString(),
          });*/
    });
    uid = TextEditingController(text: userid);
  }

   final _formKey = GlobalKey<FormState>();
  //TextEditingController uid = TextEditingController(text: userid);
  final TextEditingController myController = TextEditingController();
  final TextEditingController myController2 = TextEditingController();
  final TextEditingController myController3 = TextEditingController();
  final TextEditingController myController4 = TextEditingController();
  final TextEditingController myController5 = TextEditingController();
  final TextEditingController myController6 = TextEditingController();

  @override
  void dispose() {
    // Clean up the controller when the widget is disposed.
    uid.dispose();
    myController.dispose();
    myController2.dispose();
    myController3.dispose();
    myController4.dispose();
    myController5.dispose();
    myController6.dispose();
    super.dispose();
  }

  Future<SubmitData> _futureSubmitData;
  @override
  Widget build(BuildContext context) {
    showDialog(
      context: context,
      builder: (context) {
        return AlertDialog(
          content: Text('uid:' + uid.text),
        );
      },
    );
    return Form(
        key: _formKey,
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.center,
          children: <Widget>[
            Column(
              children: <Widget>[
                /*Visibility(
                  visible: false,
                  child: TextFormField(
                    controller: uid,
                  ),
                ),*/
                TextFormField(
                  controller: myController,
                  keyboardType: TextInputType.numberWithOptions(decimal: true),
                  decoration:
                      InputDecoration(hintText: 'Sale amount as per party'),
                  validator: (value) {
                    if (value.isEmpty) {
                      return 'Please enter amount.';
                    }
                    return null;
                  },
                ),
                TextFormField(
                  controller: myController2,
                  keyboardType: TextInputType.number,
                  decoration: InputDecoration(hintText: 'Item quantity'),
                  validator: (value) {
                    if (value.isEmpty) {
                      return 'Please enter quantity.';
                    }
                    return null;
                  },
                ),
                TextFormField(
                  controller: myController3,
                  keyboardType: TextInputType.numberWithOptions(decimal: true),
                  decoration: InputDecoration(hintText: 'Rate'),
                  validator: (value) {
                    if (value.isEmpty) {
                      return 'Please enter rate.';
                    }
                    return null;
                  },
                ),
                TextFormField(
                  controller: myController4,
                  decoration: InputDecoration(hintText: 'Broker name'),
                  validator: (value) {
                    if (value.isEmpty) {
                      return 'Please enter broker name.';
                    }
                    return null;
                  },
                ),
                TextFormField(
                  controller: myController5,
                  decoration: InputDecoration(hintText: 'Party name'),
                  validator: (value) {
                    if (value.isEmpty) {
                      return 'Please enter party name.';
                    }
                    return null;
                  },
                ),
                TextFormField(
                  controller: myController6,
                  keyboardType: TextInputType.numberWithOptions(decimal: true),
                  decoration: InputDecoration(
                      hintText: 'Amount receivable as per party'),
                  validator: (value) {
                    if (value.isEmpty) {
                      return 'Please enter amount.';
                    }
                    return null;
                  },
                ),
                Container(
                  margin: EdgeInsets.only(top: 10),
                  child: RaisedButton(
                    color: Colors.purple[400],
                    padding: EdgeInsets.only(
                        left: 110, top: 10, right: 110, bottom: 10),
                    textColor: Colors.white,
                    onPressed: () {
                      if (_formKey.currentState.validate()) {
                        setState(() {
                          showDialog(
                            context: context,
                            builder: (context) {
                              return AlertDialog(
                                content: Text('uid:' + uid.text),
                              );
                            },
                          );
                          /*_futureSubmitData = userData(
                              uid.text,
                              myController.text,
                              myController2.text,
                              myController3.text,
                              myController4.text,
                              myController5.text,
                              myController6.text);*/
                        });
                        Scaffold.of(context).removeCurrentSnackBar();
                      }
                    },
                    child: Text('Submit', style: TextStyle(fontSize: 18.0)),
                  ),
                ),
              ],
            ),
            (_futureSubmitData != null)
                ? FutureBuilder<SubmitData>(
                    future: _futureSubmitData,
                    builder: (context, snapshot) {
                      if (snapshot.hasData) {
                        if (snapshot.data.type == '1') {
                          /*showDialog(
                            context: context,
                            builder: (context) {
                              return AlertDialog(
                                content: Text('Data submitted successfully.'),
                              );
                            },
                          );*/
                          Scaffold.of(context)
                            ..removeCurrentSnackBar()
                            ..showSnackBar(SnackBar(
                                content: Text('Data submitted successfully.',
                                    style:
                                        TextStyle(color: Colors.green[100]))));
                          return Text('');
                        } else {
                          Scaffold.of(context)
                            ..removeCurrentSnackBar()
                            ..showSnackBar(SnackBar(
                                content: Text(
                                    'Data not submitted. You have already submitted for today.',
                                    style: TextStyle(color: Colors.red[100]))));
                          return Text('');
                        }
                      } else if (snapshot.hasError) {
                        return Text("${snapshot.error}");
                      }
                      return Center(child: CircularProgressIndicator());
                    },
                  )
                : Text(''),
          ],
        ));
  }
}

class\u用户表单扩展状态{
文本编辑控制器uid;
静态字符串用户标识;
@凌驾
void initState(){
super.initState();
widget.storage.readCounter().then((int值){
userid=value.toString();
/*设置状态(()=>{
userid=value.toString(),
});*/
});
uid=文本编辑控制器(文本:userid);
}
final _formKey=GlobalKey();
//TextEditingController uid=TextEditingController(文本:userid);
final TextEditingController myController=TextEditingController();
final TextEditingController myController2=TextEditingController();
final TextEditingController myController3=TextEditingController();
final TextEditingController myController4=TextEditingController();
final TextEditingController myController5=TextEditingController();
final TextEditingController myController6=TextEditingController();
@凌驾
无效处置(){
//处置小部件时清理控制器。
uid.dispose();
myController.dispose();
myController2.dispose();
myController3.dispose();
myController4.dispose();
myController5.dispose();
myController6.dispose();
super.dispose();
}
未来提交数据;
@凌驾
小部件构建(构建上下文){
显示对话框(
上下文:上下文,
生成器:(上下文){
返回警报对话框(
内容:Text('uid:'+uid.Text),
);
},
);
报税表(
键:_formKey,
子:列(
crossAxisAlignment:crossAxisAlignment.center,
儿童:[
纵队(
儿童:[
/*可见度(
可见:假,
子项:TextFormField(
控制器:uid,
),
),*/
TextFormField(
控制器:myController,
键盘类型:TextInputType.numberWithOptions(十进制:true),
装饰:
输入装饰(hintText:“按协议方的销售金额”),
验证器:(值){
if(value.isEmpty){
返回“请输入金额”;
}
返回null;
},
),
TextFormField(
控制器:myController2,
键盘类型:TextInputType.number,
装饰:输入装饰(hintText:“项目数量”),
验证器:(值){
if(value.isEmpty){
返回“请输入数量”;
}
返回null;
},
),
TextFormField(
控制器:myController3,
键盘类型:TextInputType.numberWithOptions(十进制:true),
装饰:输入装饰(hintText:“费率”),
验证器:(值){
if(value.isEmpty){
返回“请输入费率”;
}
返回null;
},
),
TextFormField(
控制器:myController4,
装饰:输入装饰(hintText:“经纪人名称”),
验证器:(值){
if(value.isEmpty){
返回“请输入经纪人名称”;
}
返回null;
},
),
TextFormField(
控制器:myController5,
装饰:输入装饰(hintText:“当事人名称”),
验证器:(值){
if(value.isEmpty){
返回“请输入参与方名称”;
}
返回null;
},
),
TextFormField(
控制器:myController6,
键盘类型:TextInputType.numberWithOptions(十进制:true),
装饰:输入装饰(
hintText:“各方应收金额”),
验证器:(值){
if(value.isEmpty){
返回“请输入金额”;
}
返回null;
},
),
容器(
页边空白:仅限边集(前10页),
孩子:升起按钮(
颜色:颜色。紫色[400],
填充:仅限边缘设置(
左:110,顶部:10,右:110,底部:10),
textColor:Colors.white,
已按下:(){
if(_formKey.currentState.validate()){
设置状态(){
显示对话框(
上下文:上下文,
生成器:(上下文){
返回警报对话框(
内容:Text('uid:'+uid.Text),
);
},
);
/*_futureSubmitData=用户数据(
uid.text,
myController.text,
myController2.text,
myController3.text,
myController4.text,
     @override
     void initState() {
     super.initState();
      widget.storage.readCounter().then((int value) {
         setState( () => {
           userid = value.toString();
         });
       });
     }
    
    TextEditingController uid; 
    String userid;

         @override
         void initState() {
         super.initState();
          widget.storage.readCounter().then((int value) {
             userid = value.toString();
             uid = TextEditingController(text: userid);
           });
           print(userid); // This is to make sure you're actually getting a value back. Check your console.
         }