Flutter项目编译报错:main.dart与auth.dart代码问题求助
修复Flutter assembleDebug编译错误
以下是针对你遇到的两个编译错误的具体修复方案,以及完整的修正后代码:
错误1:StreamProvider.value缺少必填参数initialData
StreamProvider.value要求必须传入initialData命名参数,用于在流发出第一个值前提供初始数据。同时调整泛型为Bro?,匹配流可能返回的null值:
修正后的main.dart
import 'package:flutter/material.dart'; import 'package:lewandowski/models/bro.dart'; import 'package:lewandowski/services/auth.dart'; import 'package:lewandowski/wrapper.dart'; import 'package:provider/provider.dart'; void main() { runApp(const MyApp()); } class MyApp extends StatelessWidget { const MyApp({Key? key}) : super(key: key); @override Widget build(BuildContext context) { return StreamProvider<Bro?>.value( value: AuthService().user, initialData: null, // 添加必填的初始数据参数 child: const MaterialApp( home: Wrapper(), ), ); } }
错误2:Stream<User?> Function()未定义map方法
这个错误由三个问题导致:
_auth.authStateChanges是方法,需调用(加())才能获取Stream对象map方法需传入函数引用,而非直接调用函数的结果_userfromFirebaseUser的参数类型错误,应接收Firebase的User?而非自定义的Bro
修正后的auth.dart
import 'package:firebase_auth/firebase_auth.dart'; import 'package:lewandowski/models/bro.dart'; class AuthService { final FirebaseAuth _auth = FirebaseAuth.instance; // 修正转换方法:接收Firebase User?类型参数 Bro? _userfromFirebaseUser(User? user) { return user != null ? Bro(uid: user.uid) : null; } // 修正流获取逻辑:调用authStateChanges()并正确使用map Stream<Bro?> get user { return _auth.authStateChanges() .map(_userfromFirebaseUser); } Future<User?> signAnon() async { try { UserCredential result = await _auth.signInAnonymously(); User? user = result.user; return user; } catch (e) { print(e.toString()); return null; } } // 其他未实现的认证方法可后续补充 }
bro.dart保持不变
class Bro { final String uid; Bro({required this.uid}); }
内容的提问来源于stack exchange,提问作者Robert Balinda
相关产品推荐
相关产品推荐

