无法从方法“ build”返回“ MultiProvider”类型的值,因为其返回类型为“ Widget”

时间:2020-09-27 18:54:23

标签: flutter dart provider flutter-provider

我已经厌倦了使用StreamProvider.value将用户身份验证状态更改流式传输到MaterialApp。但是我遇到了这个错误:方法'build'不能返回类型'MultiProvider'的值,因为它的返回类型为'Widget'。 这是我在pubspec.yaml中的依赖项 firebase_core: ^0.5.0 firebase_auth: ^0.18.0+1 cloud_firestore: ^0.14.0+2 provider: ^4.3.2+2

并且无法弄清楚。我被卡住了,请帮忙。谢谢您的提前帮助。

import 'package:provider/provider.dart';
    import 'package:flutter/material.dart';
class MyAwesomeApp extends StatelessWidget {


@override
  Widget build(BuildContext context) {
    return MultiProvider(
      providers: [StreamProvider<Usr>.value(value: Authenticate().userStream)],
      builder: (context, child) {
        return MaterialApp(
          home: Wrapper(),
        );
      },
    ); 
  }
}

//这是保存流的Authenticate类

    import 'package:firebase_auth/firebase_auth.dart';

class Authenticate {
  //create an instance of firebase auth
  FirebaseAuth _auth = FirebaseAuth.instance;

  // Create a new user instance from my user model
  Usr _userFromFirebaseUser(User user) {
    return user != null ? Usr(uid: user.uid) : null;
  }

  // set up auth stream to listen to user auth status
  Stream<Usr> get userStream {
    return _auth.authStateChanges().map(
        _userFromFirebaseUser); // shorter way of mapping to user custom user object
    // .map((User user) => _userFromFirebaseUser(user)); //longer one
  }

  // sign in anon
  Future signInAnon() async {
    try {
      UserCredential response = await _auth.signInAnonymously();
      User user = response.user;
      return _userFromFirebaseUser(user);
    } catch (e) {
      print(e.toString());
      return null;
    }
  }
}

0 个答案:

没有答案