gpt4 book ai didi

flutter - 如何在Flutter中使用另一个提供程序内部的提供程序

转载 作者:行者123 更新时间:2023-12-01 00:11:48 25 4
gpt4 key购买 nike

我想创建一个具有authentication service且具有不同权限和功能(例如消息)的应用程序,具体取决于用户角色。

因此,我为用户和登录管理创建了一个Provider,为用户看到的消息创建了另一个。

现在,我想在用户登录时一次获取消息。在Widgets中,我可以通过Provider.of<T>(context)访问提供程序,我想那是一种Singleton。但是,如何从另一个类(在这种情况下,是另一个提供者)访问它呢?

最佳答案

感谢您的回答。同时,我用另一个解决方案解决了它:
main.dart文件中,我现在使用ChangeNotifierProxyProvider代替ChangeNotifierProvider作为依赖提供者:

// main.dart
return MultiProvider(
providers: [
ChangeNotifierProvider(builder: (_) => Auth()),
ChangeNotifierProxyProvider<Auth, Messages>(
builder: (context, auth, previousMessages) => Messages(auth),
initialBuilder: (BuildContext context) => Messages(null),
),
],
child: MaterialApp(
...
),
);
现在,当登录状态更改并通过Auth Provider时,将重建Messages提供程序:
class Messages extends ChangeNotifier {
final Auth _authProvider;

List<Message> _messages = [];
List<Message> get messages => _messages;

Messages(this._authProvider) {
if (this._authProvider != null) {
if (_authProvider.loggedIn) fetchMessages();
}
}

...
}

关于flutter - 如何在Flutter中使用另一个提供程序内部的提供程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57765994/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com