【问题标题】:NoSuchMethodError: The method 'call' was called on nullNoSuchMethodError:在 null 上调用了方法“调用”
【发布时间】: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

我的 ma​​in.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 控制台的身份验证部分启用匿名帐户,然后才能使用它们?
  • 是的,我当然启用了它

标签: firebase flutter dart


【解决方案1】:

错误NoSuchMethodError: The method 'call' was called on null. 指向用户。即使它为空,您也可能正在尝试调用 User 对象的实例。您可能想检查FirebaseAuth.instance.signInAnonymously(); 是否成功登录。错误很可能发生在这部分。简单的空检查应该是解决此问题的好方法。

final userCredentials = await FirebaseAuth.instance.signInAnonymously();
if(userCredentials != null) {
  onSignIn(userCredentials.user);
}

【讨论】:

    猜你喜欢
    • 2020-05-23
    • 1970-01-01
    • 2021-03-11
    • 2021-09-29
    • 2021-06-18
    • 2019-12-23
    • 2020-11-20
    • 2021-11-15
    • 2021-07-14
    相关资源
    最近更新 更多