假设我在statefullWidget
中创建了一个ScrollController
,如下所示:
late ScrollController controller;
@override
void initState() {
super.initState();
controller = ScrollController();
}
@override
void dispose() {
controller.dispose();
super.dispose();
}
字符串
在小部件内部使用这个控制器很容易。但是,如果我想从另一个屏幕访问该控制器,我必须将其作为参数传递,可能如下所示:
Navigator.pushNamed(context, '/another-screen', arguments: controller);
型
但是,如果屏幕是完全独立的呢?(我不能把它作为参数传递)我想用Provider
来全局提供控制器。但是现在,我不能处理它。
2条答案
按热度按时间nmpmafwu1#
考虑使用riverpod
首先创建一个状态通知程序提供程序,该提供程序将滚动控制器作为其状态
在这里,您可以放置与他相关的任何逻辑,并且可以通过重写State Notifier的dispose方法来处置他
字符串
将提供程序连接到您要使用它的位置,如下所示
型
你可以进一步优化它
w6mmgewl2#
尝试添加全局**late ScrollController控制器;然后初始化您可以在main.dartlate ScrollController控制器;**上声明的变量