[英]NoSuchMethodError: The method 'call' was called on null
我尝试匿名实现 firebase auth,但出现以下错误:
I/flutter (11251): NoSuchMethodError: 方法 'call' 在 null 上被调用。 I/flutter (11251): Receiver: null I/flutter (11251): 尝试调用: call(Instance of 'User')
pubspec.yaml:
dependencies:
flutter:
sdk: flutter
animated_text_kit: ^4.2.1
cupertino_icons: ^1.0.2
firebase_core: 0.5.1
firebase_auth: 0.18.2
我的main.dart 的一部分:
...
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: LandingPage(), // SplashScreen
); // define it once at root level.
}
}
...
...
...
class ExcRoute extends StatelessWidget {
// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
const Exc({Key key, @required this.onSignIn}) : super(key: key);
final void Function(User) onSignIn;
Future<void> _signInAnonymously() async {
try {
final userCredentials = await FirebaseAuth.instance.signInAnonymously();
onSignIn(userCredentials.user);
} catch (e) {
print(e.toString());
}
}
// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
我的登陆页面.dart:
import 'package:exc/main.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';
class LandingPage extends StatefulWidget {
// const LandingPage({Key? key}) : super(key: key);
@override
_LandingPageState createState() => _LandingPageState();
}
class _LandingPageState extends State<LandingPage> {
User _user;
void _updateUser(User user) {
setState(() {
_user = user;
});
}
@override
Widget build(BuildContext context) {
if (_user == null) {
return ExcRoute(
onSignIn: _updateUser,
);
}
return Container();
}
}```
错误NoSuchMethodError: The method 'call' was called on null.
指向用户。 很可能您正在尝试调用 User 对象的实例,即使它为空。 您可能想检查FirebaseAuth.instance.signInAnonymously();
成功登录。 错误很可能发生在这部分。 一个简单的空检查应该是这个问题的一个很好的解决方法。
final userCredentials = await FirebaseAuth.instance.signInAnonymously();
if(userCredentials != null) {
onSignIn(userCredentials.user);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.