Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 颤振Riverpod替代a_供应商。何时_Flutter_Provider_Riverpod - Fatal编程技术网

Flutter 颤振Riverpod替代a_供应商。何时

Flutter 颤振Riverpod替代a_供应商。何时,flutter,provider,riverpod,Flutter,Provider,Riverpod,寻找替代方案 @override Widget build(BuildContext context) { final _user = useProvider(MyUserProvider); ... return _user.when(data: data, loading: loading, error: error) 对于我的大多数组件 我想用像这样的东西 final _user = useProvider(MyUserProvider); // then r

寻找替代方案

@override
  Widget build(BuildContext context) {
     final _user = useProvider(MyUserProvider);
       ...
return _user.when(data: data, loading: loading, error: error)
对于我的大多数组件

我想用像这样的东西

final _user = useProvider(MyUserProvider);
// then
return Text(_user.name)
直接原因是firebase用户数据流已经在树中,并且不能为null或有错误

  • 我可以使用ChangeNotifier来实现这一点吗

  • 我还可以如何实现这一点


  • 您可以创建一个新的提供者,该提供者将依赖于以下先例:

    final connectedUserProvider = Provider<User>((ref) {
      final userState = ref.watch(MyUserProvider.state);
      return userState.maybeWhen(data: (User user) => user, orElse: () => throw "you should not be there");
    });
    
    final connectedUserProvider=提供程序((ref){
    final userState=ref.watch(MyUserProvider.state);
    返回userState.maybeawhen(数据:(用户)=>User,或lse:()=>throw“you should not there”);
    });
    
    您可以创建一个新的提供者,该提供者将依赖于以下先例:

    final connectedUserProvider = Provider<User>((ref) {
      final userState = ref.watch(MyUserProvider.state);
      return userState.maybeWhen(data: (User user) => user, orElse: () => throw "you should not be there");
    });
    
    final connectedUserProvider=提供程序((ref){
    final userState=ref.watch(MyUserProvider.state);
    返回userState.maybeawhen(数据:(用户)=>User,或lse:()=>throw“you should not there”);
    });
    
    类似的东西可能适合您:

    final authStream=StreamProvider((ref)=>ref.watch(FirebaseAuth.instance.authStateChanges());
    最终用户=提供者((ref)=>ref.watch(authStream.data?.value);
    
    然后:

    final\u user=useProvider(用户);
    返回文本(_user?.name???);
    //或者如果您确定该值不为null,或者您的应用程序依赖于该值不为null
    返回文本(\u user!.name);
    
    类似的东西可能适合您:

    final authStream=StreamProvider((ref)=>ref.watch(FirebaseAuth.instance.authStateChanges());
    最终用户=提供者((ref)=>ref.watch(authStream.data?.value);
    
    然后:

    final\u user=useProvider(用户);
    返回文本(_user?.name???);
    //或者如果您确定该值不为null,或者您的应用程序依赖于该值不为null
    返回文本(\u user!.name);
    
    MyUserProvider
    是一个
    StreamProvider
    。如何插入它?并且仍然可以获得更新
    MyUserProvider
    是一个
    StreamProvider
    。如何将其插入?并且仍然可以获得更新