android-studio - Flutter Navigator.pop 不会发回数据
问题描述
到目前为止,这是我的代码。我不知道出了什么问题,我也尝试了很多 youtube turolial 和其他东西,但看起来流行音乐不会返回正确的数据。我真的需要帮助,我已经花了 2 天了
void main() {
List<String> names = [];
List<String> mgs = [];
runApp(MaterialApp(
title: 'Returning Data',
home: HomeScreen(names, mgs),
));
}
class HomeScreen extends StatelessWidget {
List<String> names = [];
List<String> mgs = [];
HomeScreen(this.names, this.mgs);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Colors.blue,
title: Text("Project_Drink"),
),
body: Container(
child: Column(
children: <Widget>[
new Expanded(
child: ListView.builder
(
itemCount: mgs.length,
itemBuilder: (context, Index) {
return Text("Name: " + names[Index]
+" "+ "Mg: " + mgs[Index]);
}
)
)
],
),
),
bottomNavigationBar :BottomAppBar (
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Row(
children: <Widget>[
const Expanded(child: Text("TOTAL : 200")),
FloatingActionButton(
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => AddProduct()),
);
},
child: Icon(Icons.add),
),
],
),
),
),
);
}
}
这是我希望它发送回数据的 AddProduct,然后我应该能够将其放入列表中。Lika 不是垫
class AddProduct extends StatefulWidget {
@override
State createState() => new _AddProductState();
}
class _AddProductState extends State<AddProduct> {
List<String> names = [];
List<String> mgs = [];
//final TextEditingController eCtrl = new TextEditingController();
final nameController = TextEditingController();
final mgController = TextEditingController();
@override
Widget build (BuildContext ctxt) {
return new Scaffold(
appBar: AppBar(
backgroundColor: Colors.blue,
title: Text("New Drink"),
),
body: new Column(
children: <Widget>[
new TextField(
decoration: InputDecoration(
hintText: "Name",
),
controller: nameController,
),
new TextField(
decoration: InputDecoration(
hintText: "Mg",
suffixText: "Mg",
),
controller: mgController,
),
RaisedButton(
onPressed: (){
names.add(nameController.text);
mgs.add(mgController.text);
setState(() {});
nameController.clear();
mgController.clear();
Navigator.pop(context, names + mgs);
},
child: Text("ADD"),
),
],
)
);
}
}
解决方案
用简单的方法试试这个,当按下然后调用这个方法
goToView() async {
bool data=await Navigator.push(context, new CupertinoPageRoute(builder: (BuildContext context) {
return new CoolForgot();
}));
print(data);
}
我的下一个视图是忘记屏幕,所以我使用了 CoolForgot(),您可以根据您的要求使用。
然后当按下下一个视图中的后退按钮时(在我的情况下为 CoolForgot())调用这个
Navigator.pop(context,true);
我已经传递 bool 值并获取 bool 值,您可以传递任何类型的对象并从中获取。
推荐阅读
- javascript - ANT JS选择不显示值reactjs
- c - 从C中的双指针数组中删除单行?
- ios - 如何在 ios 下载的项目上设置钥匙串功能?
- ios - touchesEnded 后如何使用 touchesBegan
- mysql - 在 SQL 表中创建联接
- node.js - 模拟全局键盘快捷键以在 travis-ci 和 appveyor 中测试 Electron 应用程序
- javascript - 当我以一种方式编写 JavaScript 代码时它不会运行,但当我稍微修改它时它会运行
- php - 为什么 json_decode 不能处理这个 json 字符串?
- asp.net-core - AuthorizeRouteView 不适用于已注销的用户
- c# - 可空引用类型和“[CS8603] 可能的空引用返回。”