hello,能否以 demo 为例说明一下模块、子模块、页面之间的关系
hw20101101 opened this issue · 13 comments
我在文档中也没有找到相关的说明。
另外,我把 demo 中的 ThrioNavigator.notify 搬到项目中但是却走不通。
谢谢!!
example 目录下有
如果要搭建 tab 导航类型的根页面,那应该把 tab 导航页面放在哪里呢?
我目前用的是 DefaultTabController 和 BottomNavigationBar,把它们放在了 biz1/flutter1 相关的页面中。
但是当我在 biz2/flutter4 页面返回 biz2/flutter2 页面时,给 biz2/flutter2 页面发送通知却没有响应。
biz2/flutter2 部分代码:
@override
Widget build(BuildContext context) => NavigatorPageNotify(
name: 'flutter2_notify',
onPageNotify: (params) =>
print('-->> mine receive notify: $params'),
child: makeScaffold()
);
biz2/flutter4 调用代码:
ThrioNavigator.notify(url: '/biz2/flutter2', name: 'flutter2_notify', params: {'age': 11} );
- tab类型的页面这个要看你的需求了,thrio只是路由整个页面
- notify 你看看 demo 其它示例,还有就是页面通知在页面出现的时候才会调用
谢谢,你说的第二点文档中有写。
能否帮忙看看这个 demo 呢?现在的问题是:我从我的页面(Flutter2Page)点击 ==== push flutter4 ==== 之后,然后点击页面底部的 ==== pop and Notify ==== 之后,我的页面(Flutter2Page)没有收到通知。
demo 的示例是这样的,你的没有 await,你的例子里面,至少要await notify
if (!await ThrioNavigator.notify(
url: '/biz1/flutter1',
name: 'page1Notify',
)) {
await ThrioNavigator.push(
url: '/biz1/flutter1', params: {'page1Notify': {}});
}
你这种情况,可以考虑 push 的 popResult 是否适用
谢谢!我刚改了 flutter4 页面的点击事件:
InkWell(
onTap: () async {
if (!await ThrioNavigator.notify(
url: '/biz2/flutter2',
name: 'page2Notify',
params: 'name'
)) {
await ThrioNavigator.pop();
}
},
child: Container(
padding: const EdgeInsets.all(8),
margin: const EdgeInsets.all(8),
color: Colors.grey,
child: const Text(
' === pop and Notify === ',
style: TextStyle(fontSize: 22, color: Colors.black),
)),
)
为什么点击 === pop and Notify ===
返回到 flutter2 页面之后,flutter2 页面还是没有收到通知呢?
非常感谢!我刚试了一下,poppedResult 可以满足需求。
但是 Flutter2Page 相关的 module 中的 didAppear 等生命周期方法为什么一直没有触发呢 ?
这里会有个类似命名空间的概念,只能收到该 module 下的页面的生命周期
抱歉,demo 中的 module 有点多,你说的 该 module 是指 biz1 目录下的 module 还是指 biz1/flutter1 目录下的 module?
另外,是否可以使我的 demo 中的 biz2/flutter2 目录下的 module 正常运行 didAppear 等方法?如果可以的话该怎么做呢?
if (!await ThrioNavigator.notify( url: '/biz2/flutter2', name: 'page2Notify', params: 'name' )) { await ThrioNavigator.pop(); }
这里 ! 要去掉,我的例子是如果通知不到该页面表示没有打开过该页面,然后再 push
抱歉,demo 中的 module 有点多,你说的 该 module 是指 biz1 目录下的 module 还是指 biz1/flutter1 目录下的 module?
另外,是否可以使我的 demo 中的 biz2/flutter2 目录下的 module 正常运行 didAppear 等方法?如果可以的话该怎么做呢?
子模块,包括子模块的子模块
这里 ! 要去掉,我的例子是如果通知不到该页面表示没有打开过该页面,然后再 push
😺 好的,谢谢!我试试