gpt4 book ai didi

Flutter - 从 AlertDialog 返回内容

转载 作者:行者123 更新时间:2023-12-03 04:39:28 25 4
gpt4 key购买 nike

代码的想法是,当用户按下添加时,他可以键入条形码或简单地退出警报屏幕。验证条形码后,会从该条形码生成一个对象,并将其添加到实际的市场购物车中。此代码已经有效,但我正在尝试找到一种方法以某种方式将它隔离为一个函数。

IconButton(icon: Icon(Icons.add), onPressed: () {
TextEditingController barcodeController = TextEditingController();
final _formBarcode = GlobalKey<FormState>();
showDialog(
context: context,
builder: (BuildContext context) {
return AlertDialog(
content: Stack(
overflow: Overflow.visible,
children: <Widget>[
Form(
key: _formBarcode,
child: Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
Padding(
padding: EdgeInsets.all(2.0),
child: TextFormField(
validator: (String value) {
if (BarcodeController.text.isEmpty) {
return "please enter the product barcode";
}
return null;
},
onSaved: (String value) {
},
controller: barcodeController,
style: TextStyle(
color: Colors.black,
fontSize: 10.0,
fontWeight: FontWeight.w700,
),
decoration: InputDecoration(
labelText: "barcode:",
labelStyle: new TextStyle(
fontSize: 12,
),
suffixIcon: IconButton(icon: Icon(Icons.camera_alt), onPressed: () async {}),
),
),
),
Padding(
padding: EdgeInsets.all(12),
),
Padding(
padding: const EdgeInsets.all(2.0),
child: RaisedButton(
color: Colors.black,
child: Text(
"Confirmar",
style: TextStyle(color: Colors.white),
),
onPressed: () {
if (_formBarcode.currentState.validate()) {
_formBarcode.currentState.save();
Navigator.pop(context, item("11111", BarcodeController.text));
}
},
),
)
],
),
),
],
),
);
})
.then((value) {
print(value);
if(value != null && value is item){
setState(() {
cart.add(value);
});
}
});

看起来像

IconButton(icon: Icon(Icons.add), onPressed: () {
AddButtonAction().then((value) {
print(value);
if(value != null && value is item){
setState(() {
cart.add(value);
});
}

我已经尝试过像 Future 这样的返回,但是在执行它时得到了 null,在我保存表单之前返回的函数,可能是因为返回 AlertDialog

最佳答案

showDialog 返回的 Future 包含您提供给 Navigator.pop() 的内容

var result = await showDialog(
//Your Dialog Code that does Navigator.pop(context, result) when necessary
);
print(result); // this is the result that the dialog sent over

关于Flutter - 从 AlertDialog 返回内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63494817/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com