在使用 GetX 的 flutter 项目中,哪个导航代码更适合小部件或控制器?
我正在使用 GetX 制作一个 flutter 应用程序。
我想知道在小部件和控制器之间的哪里编写 GetX 的导航功能。
ex) GetX.toNamed()
, GetX.back()
如果小部件必须处理它,那么当屏幕出现时,如何将事件从控制器传递到小部件控制器联网后需要移动吗?
I'm making a flutter app using GetX.
I want to know where to write the navigation function of GetX, between widgets and controllers.
ex) GetX.toNamed()
, GetX.back()
If the widget has to handle it, how do you deliver an event from the controller to the widget when the screen needs to be moved after networking in the controller?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这很简单。
创建另一个控制器
并检查您的条件,然后
if true
GetX.back()
else returnnull
示例。
its simple.
create another controller
and check your condition then
if true
GetX.back()
else returnnull
Example.
旧的错误答案。
恕我直言,在小部件中。
100 次导航中有 99 次是由用户操作引起的。
您不想在小部件事件处理程序
controller.back()
或controller.next()
中编写,然后在控制器中编写:
void back () {Get.back(); }
或void next() {Get.toNamed('/next')}
因此,大部分导航无论如何都将在小部件中完成。
在剩下的 1% 中,您根据更改的状态重建小部件树,并且重建的结果是显示不同的屏幕。
更新。
最近,我遇到了很多情况,从控制器调用导航方法看起来更自然和优雅。
所以,我目前的意见是灵活一些:
如果涉及一些逻辑 - 从控制器调用:
如果没有逻辑,则直接从小部件调用:
Old wrong answer.
IMHO in widgets.
In 99 cases out of 100 navigation is caused by user action.
You don't want to write in your widget event handler
controller.back()
orcontroller.next()
and then in the controller:
void back () {Get.back(); }
orvoid next() {Get.toNamed('/next')}
So, the most of navigation will be done in widgets anyway.
In the remaining 1% you rebuild the widget tree according to the changed state and as a result of rebuilding you show a different screen.
Update.
Recently, I had a lot of situations when calling navigation methods from controllers looks more natural and elegant.
So, my current opinion is to be flexible:
If some logic is involved - call from controller:
If there is no logic, call directly from the widget: