flutter - 提供'catchError'
问题描述
我想将我的应用程序转换为 Flutter Web,但是当我尝试在本地运行它时出现以下错误
StreamProvider 监听的 _MapStream 抛出异常,但没有
catchError
提供。异常:NoSuchMethodError:null 上的无效成员:'providerId'
我将不胜感激有关如何解决此问题的建议。
这是我的 main.dart 文件,以防相关:
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return StreamProvider<User>.value(
value: AuthService().user,
child: MaterialApp(
debugShowCheckedModeBanner: false,
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: Wrapper(),
),
);
}
}
解决方案
所以我的第一个解决方案是使用 StreamBuilder 而不是 StreamProvider:
return StreamBuilder(
stream: AuthService().currentUser,
builder: (context, snapshot) {
if (snapshot.hasData) {
return AdminDashboardScreen();
} else {
return SignInScreen();
}
},
);
但现在我也设法让 StreamProvider 工作了!我发现那里有很多 Firebase 包......你应该用于 web 的是: https ://pub.dev/packages/firebase
但不是作为一个类导入和使用,您应该能够像这样引用它:
import 'package:firebase/firebase.dart' as fb;
final fb.Auth _firebaseAuth = fb.auth();
// create user object based on firebase user
User _userFromFirebaseUser(fb.User user) {
return user != null ? User(uid: user.uid) : null;
}
// auth change user stream
Stream<User> get currentUser {
return _firebaseAuth.onAuthStateChanged.map(_userFromFirebaseUser);
}
// sign in anon
Future<User> signInAnon() async {
try {
fb.UserCredential result = await _firebaseAuth.signInAnonymously();
fb.User user = result.user;
return _userFromFirebaseUser(user);
} catch (e) {
print('[AuthService] error signInAnon: ${e.toString()}');
return null;
}
}
推荐阅读
- heroku - 我一直在尝试升级我的 heroku postgres 数据库,但我不断收到类型错误
- scala - 如何简洁地在foreach中编写Future方法
- sql - 在oracle apex中根据穿梭选择多个值
- ftp - 在 mule 4 中使用 http 代理的 Ftp
- python - 将pdf批量转换为txt文件?
- android - 如何将人脸生物特征保存为视频 Flutter
- apache-spark - 使用 PySpark 修改 Struct 列内的嵌套属性
- python - 我想用python在普通窗口中打开cmd
- google-cloud-platform - 如何从 Digital Ocean Spaces 下载/迁移多个文件到 GCP Cloud Storage?
- c++ - SFML - 未能创建字体