flutter - 通过多个小部件从模态传递数据
问题描述
Flutter 的另一个新手。我真的认为这将是 2 分钟的工作,但实际上我在这里得到了堆栈。我需要传递“你好”数据
从模态小部件
class ToolModal extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Column(
children: <Widget>[
Text('tools'),
FlatButton(
child: Text('save'),
onPressed: () => Navigator.pop(context, 'Hello'),
),
],
);
}
}
通过 Bar 小部件
class Bar extends StatelessWidget {
@override
Widget build(BuildContext context) {
return BarItem(
name: 'Option1',
icon: Icons.category,
onPressed: () {
showModalBottomSheet(
isScrollControlled: true,
context: context,
builder: (context) => ToolModal(),
);
},
);
}
}
到我的主屏幕
class Home extends StatefulWidget {
@override
_HomeState createState() => _HomeState();
}
class _HomeState extends State<Home> {
@override
Widget build(BuildContext context) {
return Bar();
}
}
我知道(我以为我知道)如何在屏幕之间传递数据,但模式和小部件之间真的让我失望。请问有人可以帮我吗?我真的为这个问题道歉,但我找不到答案
解决方案
你很亲密。showModalBottomSheet
返回一个Future
。您可以通过以下方式捕获生成的“Hello”:
class Bar extends StatelessWidget {
@override
Widget build(BuildContext context) {
return BarItem(
name: 'Option1',
icon: Icons.category,
onPressed: () async {
String hello = await showModalBottomSheet(
isScrollControlled: true,
context: context,
builder: (context) => ToolModal(),
);
},
);
}
}
您可以使用回调函数将数据传回主屏幕:
class Bar extends StatelessWidget {
final Function(String) onHello;
const Bar({Key key, this.onHello}): super(key: key);
@override
Widget build(BuildContext context) {
return BarItem(
name: 'Option1',
icon: Icons.category,
onPressed: () async {
String hello = await showModalBottomSheet(
isScrollControlled: true,
context: context,
builder: (context) => ToolModal(),
);
onHello(hello);
},
);
}
}
class Home extends StatefulWidget {
@override
_HomeState createState() => _HomeState();
}
class _HomeState extends State<Home> {
@override
Widget build(BuildContext context) {
return Bar(onHello: (String hello) {
print(hello);
});
}
}
推荐阅读
- python - Python bot 在本地运行良好,但在 Heroku 崩溃
- python - python - 如何在使用python中的链接列表抓取网站时保持循环
- vb.net - 从列表视图制作自动打字机
- javascript - 谷歌工作表脚本
- ansible - 从组中的所有主机获取 ansible_fqdn
- typescript - 有没有办法使用 TypeScript 的类型系统将“模板”类型声明为特定类型的字符串
- git - 安全远程访问 GIT 服务器
- .net - 仅在 Windows 7 上出现 .NET SSL 错误(在 Windows 10 上正常)
- javascript - 如果点击计数 JavaScript
- python - 在 Flask 中以 XML 格式获取响应