我有一个两页的颤动应用程序我将一些数据从第一页推到第二页。
我在第一页中还有一个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
。我怎么能表现出来?
正如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 ');
}
),
));
}
}