【发布时间】:2021-11-30 18:08:28
【问题描述】:
我尝试匿名实现 firebase 身份验证,但出现以下错误:
I/flutter (11251):NoSuchMethodError:方法“调用”在 null 上调用。 I/颤振(11251):接收器:空 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(
我的landing_page.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();
}
}```
【问题讨论】:
-
您是否先在 Firebase 控制台的身份验证部分启用匿名帐户,然后才能使用它们?
-
是的,我当然启用了它