【发布时间】: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