【问题标题】:Flutter : PopUp Form value showing nullFlutter:弹出表单值显示为空
【发布时间】:2020-07-31 19:52:16
【问题描述】:

我是 Flutter 的新手。 在我的项目中,我需要在加载页面时显示一个弹出窗口。所以我使用了 WidgetsBindingin initstate()。 我的代码可以在页面加载时显示弹出窗口,但在该弹出窗口中,有一个文本字段可以在提交后输入手机号码,我需要获取该电话号码,但它没有显示该值。编译时显示空值。

 @override
  void initState() {
super.initState();

// _fetchSessionAndNavigate();
WidgetsBinding.instance.addPostFrameCallback((_) async {
  await showDialog<String>(
    context: context,
    builder: (BuildContext context) => new AlertDialog(
      content: Stack(
        overflow: Overflow.visible,
        children: <Widget>[
          Positioned(
            right: -40.0,
            top: -40.0,
            child: InkResponse(
              onTap: () {
                Navigator.of(context).pop();
              },
              child: CircleAvatar(
                child: Icon(Icons.close),
                backgroundColor: Colors.red,
              ),
            ),
          ),
          Form(
            key: _formKey,
            child: Column(
              mainAxisSize: MainAxisSize.min,
              children: <Widget>[
                Padding(
                  padding: EdgeInsets.all(8.0),
                  child: TextFormField(
                    keyboardType: TextInputType.number,
                    maxLines: 1,
                    obscureText: true,
                    autofocus: false,
                    decoration: new InputDecoration(
                        hintText: 'Enter Mobile Number',
                        icon: new Icon(
                          Icons.phone_iphone,
                          color: Colors.grey,
                        )),
                    validator: (value) => value.isEmpty
                        ? 'Phone Number can\'t be empty'
                        : null,
                    onSaved: (value) => phoneNumber = value.trim();
                  ),
                ),
                Padding(
                  padding: const EdgeInsets.all(8.0),
                  child: RaisedButton(
                    child: Text("Register Your Device"),
                    onPressed: () {
                      if (_formKey.currentState.validate()) {
                        //_formKey.currentState.save();
                        Print (_phoneNumber); //NEED TO GET ENTERED VALUE HERE
                      }
                    },
                  ),
                )
              ],
            ),
          ),
        ],
      ),
    ),
  );
});

}

【问题讨论】:

  • 我得到了结果:。我忘记添加 TextEditingController txt1 = TextEditingController();我通过添加 ----" controller: txt1" 来更新我的代码
  • 您的代码运行良好,只是您需要取消注释此行:_formKey.currentState.save() 并将Print(_phoneNumber) 更改为print(phoneNumber)。另外,检查你是否定义了phoneNumber

标签: flutter authentication popup textformfield


【解决方案1】:

你可以去掉函数前面的 await 关键字,这样调用它:

showDialog({the dialog}).then((dialogResult){
   setState((){
      yourLocalVariable = dialogResult;
   });
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-27
    • 2023-03-02
    • 1970-01-01
    • 2021-02-26
    • 1970-01-01
    • 2018-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多