我有一个两页抖动应用程序,我正在将一些数据从第一页推送到第二页。
我在第一页中还有一个Future
,当它满足时,它应该能够在第二页中更改数据。
以下是我的应用程序中的示例代码。
String _text = "From screen one";
ImagePicker.pickImage(source: ImageSource.camera).then((image) {
_text = "got image";
});
Future.delayed(const Duration(milliseconds: 600), () {
//StateContainer.of(context).updateStatus(Status.loading);
Navigator.push(
context,
MaterialPageRoute(builder: (context) => SecondPage(text: _text)),
);
});
/// My second page
class SecondPage extends StatelessWidget {
String text;
SecondPage({Key key, @required this.text}) : super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
body: SingleChildScrollView(
child: Container(
padding: EdgeInsets.all(40.0),
child: Text(
this.text,
style: TextStyle(
fontSize: 20.0,
color: Colors.grey,
),
),
),
));
}
}
我的问题是第二页上没有显示got image
。如何显示?
答案 0 :(得分:0)
如pskink在注释中所建议的,下面的代码对我有用。
final Future promise = ImagePicker.pickImage(source: ImageSource.camera);
Navigator.push(
context,
MaterialPageRoute(builder: (context) => SecondPage(promise: promise,)),
);
/// My second page
class SecondPage extends StatelessWidget {
final Future promise;
SecondPage({Key key, @required this.promise}) : super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
body: SingleChildScrollView(
child: Container(
padding: EdgeInsets.all(40.0),
child: FutureBuilder(
future: this.promise,
builder: (BuildContext context, AsyncSnapshot snapshot) {
print(snapshot.data);
return Text('Hello ');
}
),
));
}
}