繁体   English   中英

NoSuchMethodError: 方法 'call' 在 null 上被调用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM