【发布时间】:2021-06-03 09:31:21
【问题描述】:
如何处置或重置我的所有提供商? 如果用户已注销,我需要重置所有提供程序,以便为新登录的用户再次触发所有提供程序流程。
我怎样才能做到这一点?
谢谢
【问题讨论】:
标签: flutter
如何处置或重置我的所有提供商? 如果用户已注销,我需要重置所有提供程序,以便为新登录的用户再次触发所有提供程序流程。
我怎样才能做到这一点?
谢谢
【问题讨论】:
标签: flutter
您的Provider 负责处理处置:当提供程序小部件从树中移除时,它应该关闭流。
您需要做的是将您的 Providers 仅放在“已登录用户”小部件树上方,这样当用户注销并放置在上面时,让我们说登录路由您的提供者将自动处理已删除的小部件。
以下示例将 Model 实例化一次,并在
Provider 已从树中移除。
class Model {
void dispose() {}
}
class Stateless extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Provider<Model>(
create: (context) => Model(),
dispose: (context, value) => value.dispose(),
child: ...,
);
}
}
值得注意的是,Provider.value 暴露了一个现有的值而不释放它。
【讨论】: