【发布时间】:2020-11-30 15:13:07
【问题描述】:
我尝试在 Navigator.pop 上重新加载我的页面,然后我执行以下操作:
Flutter - How to get notified when the page I pushed was popped by back button?
但是当我在我的父页面中时:
refresh() async{
await _immagineBloc.getNomiImmagini(_deviceName);
setState(() {
_index = 0;
});
}
这不会在 selectPhoto 初始化状态中返回:
Widget build(BuildContext context) {
_tabs = getTabs(2);
return StreamBuilder(
stream: _immagineBloc.immaginiName,
builder: (context, snapshot) {
if (snapshot.hasData) {
return new MaterialApp(
home: DefaultTabController(
length: 2,
child: Scaffold(
appBar: AppBar(
centerTitle: true,
title: Text('App Drive'),
backgroundColor: Colors.blueAccent,
bottom: TabBar(
isScrollable: false,
indicatorColor: Colors.white,
onTap: (int index) {
_index = index;
setIndex(index);
},
tabs: _tabs)
),
body: _index == 0 ? selectPhoto(snapshot, refresh) : ImageOnServer(snapshot, _deviceName),
),
如何重新进入selectPhoto里面的init状态?
刷新方法调用后我想重新进入的类的初始化状态:
class selectPhoto extends StatefulWidget {
@override
final Function() notifyParent;
selectPhoto(AsyncSnapshot<dynamic> snapshot, @required
this.notifyParent){
_snapshot = snapshot;
}
AsyncSnapshot<dynamic> _snapshot;
_selectPhotoState createState() => _selectPhotoState (_snapshot);
}
class _selectPhotoState extends State<selectPhoto> {
_selectPhotoState(AsyncSnapshot<dynamic> snapshot) {
_snapshot = snapshot;
@override
void initState() {
super.initState();
_fetchNewMedia(_snapshot); // i wan't to re enter here on reload method enter
}
}
在构建中我有:
onPressed: () =>
Navigator.push(
context,
MaterialPageRoute(builder: (context) => photoSelection(_imagesIds, _deviceName, _imageNames))
).then((val) {
if (val == 'pop') {
widget.notifyParent();
};
})
请帮助我!
【问题讨论】:
标签: flutter