在 null 上调用了 getter 'user'

Posted

技术标签:

【中文标题】在 null 上调用了 getter \'user\'【英文标题】:The getter 'user' was called on null在 null 上调用了 getter 'user' 【发布时间】:2021-10-22 09:05:39 【问题描述】:

我正在尝试向 Firebase 提交表单,但收到错误 Getter 'user' was called on null。我不知道如何解决这个问题。一切看起来都很好,不知道为什么会出现此错误。我试着做一个

empty String like this  String user = '';

但它仍然给我错误。

这是我将数据上传到 Firebase 的学员

import 'dart:io';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_geocoder/geocoder.dart';
import 'package:image_picker/image_picker.dart';
import 'package:location/location.dart';

class AuthProvider extends ChangeNotifier 
  FirebaseAuth _authData = FirebaseAuth.instance;

  File image;
  bool isPicAvail = false;
  String pickerError = '';
  double storeLatitude;
  double storeLongitude;
  String storeAddress;
  String placeName;
  String error = '';
  bool loading = false;
  String email;

  
  Future<void>saveVendorData(
    String url, shopName, number, aboutShop, cnicNumber, ntnNumber)
    User user = FirebaseAuth.instance.currentUser;
    DocumentReference _vendors = FirebaseFirestore.instance.collection('vendors').doc(user.uid);
    _vendors.set(
      'uid': user.uid,
      'email': this.email,
      'shopName': shopName,
      'number': number,
      'aboutShop': aboutShop,
      'cnicNumber': cnicNumber,
      'ntnNumber': ntnNumber,
      'address': '$this.placeName: $this.storeAddress',
      'location': GeoPoint(this.storeLatitude, this.storeLongitude),
      'shopOpen': true,
      'rating': 0.00,
      'totalRating': 0
    );
    return null;
  




错误出现在这一行的表格中。 credential.user?.uid!=null

TextButton(
                  onPressed: () 
                    if(_authData.isPicAvail == true) 
                      if (_formKey.currentState.validate()) 
                        setState(() 
                          loading = true;
                        );
                        _authData.registerVendor(email,password).then((credential)
                          if(credential.user?.uid!=null)
                            uploadFile(_authData.image.path).then((url)
                              if(url!=null)
                                _authData.saveVendorData(
                                  url: url,
                                  number: number,
                                  shopName: shopName,
                                  aboutShop: _aboutShopController.text,
                                  cnicNumber: _cnicNumberController.text,
                                  ntnNumber: _ntnNumberController.text,
                                ).then((value) 
                                  setState(() 
                                  //  _formKey.currentState.reset();
                                    loading = false;
                                  );
                                  Navigator.pushReplacementNamed(context, HomeScreen.id);
                                );
                              else
                                scaffoldMessage('Failed to upload Shop Pic');
                              
                            );
                          else
                            scaffoldMessage(_authData.error);
                          
                        );
                      
                    else
                      scaffoldMessage('Please add Shop Pic');
                    
                    ,
                  child: Text('Register'),
                  style: TextButton.styleFrom(
                    primary: Colors.black,
                    backgroundColor: Colors.greenAccent,
                    onSurface: Colors.grey,
                  ),
                ),

这是错误

Launching lib\main.dart on android SDK built for x86 in debug mode...
Running Gradle task 'assembleDebug'...
Parameter format not correct -
√  Built build\app\outputs\flutter-apk\app-debug.apk.
Installing build\app\outputs\flutter-apk\app.apk...
D/FlutterLocationService( 5018): Creating service.
D/FlutterLocationService( 5018): Binding to location service.
D/EGL_emulation( 5018): eglMakeCurrent: 0xa6285e00: ver 2 0 (tinfo 0x8c340180)
Debug service listening on ws://127.0.0.1:51256/Syc26foQ1_0=/ws
Syncing files to device Android SDK built for x86...
D/EGL_emulation( 5018): eglMakeCurrent: 0xa38f76e0: ver 2 0 (tinfo 0x8d4a9280)
D/EGL_emulation( 5018): eglMakeCurrent: 0xa6285e00: ver 2 0 (tinfo 0x8c340180)
D/EGL_emulation( 5018): eglMakeCurrent: 0xa38f76e0: ver 2 0 (tinfo 0x8d4a9280)
D/EGL_emulation( 5018): eglMakeCurrent: 0xa6285e00: ver 2 0 (tinfo 0x8c340180)
D/EGL_emulation( 5018): eglMakeCurrent: 0xa38f76e0: ver 2 0 (tinfo 0x8d4a9280)
I/zygote  ( 5018): Do partial code cache collection, code=60KB, data=53KB
I/zygote  ( 5018): After code cache collection, code=60KB, data=53KB
I/zygote  ( 5018): Increasing code cache capacity to 256KB
I/TextInputPlugin( 5018): Composing region changed by the framework. Restarting the input method.
W/ListenableEditingState( 5018): a listener was added to EditingState while a batch edit was in progress
W/IInputConnectionWrapper( 5018): endBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): beginBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextBeforeCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): endBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): beginBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextBeforeCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextAfterCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): getSelectedText on inactive InputConnection
W/IInputConnectionWrapper( 5018): endBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): beginBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextBeforeCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): endBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): beginBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextBeforeCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): endBatchEdit on inactive InputConnection
I/TextInputPlugin( 5018): Composing region changed by the framework. Restarting the input method.
W/IInputConnectionWrapper( 5018): beginBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextBeforeCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextAfterCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): getSelectedText on inactive InputConnection
W/IInputConnectionWrapper( 5018): endBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): beginBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextBeforeCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): endBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): beginBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextBeforeCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): endBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): beginBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextBeforeCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextAfterCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): getSelectedText on inactive InputConnection
W/IInputConnectionWrapper( 5018): endBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): beginBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextBeforeCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): endBatchEdit on inactive InputConnection
I/zygote  ( 5018): Do full code cache collection, code=122KB, data=89KB
I/zygote  ( 5018): After code cache collection, code=94KB, data=53KB
I/TextInputPlugin( 5018): Composing region changed by the framework. Restarting the input method.
W/ListenableEditingState( 5018): a listener was added to EditingState while a batch edit was in progress
W/IInputConnectionWrapper( 5018): endBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): beginBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextBeforeCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextAfterCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): getSelectedText on inactive InputConnection
W/IInputConnectionWrapper( 5018): endBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): beginBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextBeforeCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): endBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): beginBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextBeforeCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): endBatchEdit on inactive InputConnection
I/zygote  ( 5018): Do partial code cache collection, code=121KB, data=82KB
I/zygote  ( 5018): After code cache collection, code=121KB, data=82KB
I/zygote  ( 5018): Increasing code cache capacity to 512KB
I/TextInputPlugin( 5018): Composing region changed by the framework. Restarting the input method.
W/IInputConnectionWrapper( 5018): beginBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextBeforeCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextAfterCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): getSelectedText on inactive InputConnection
W/IInputConnectionWrapper( 5018): endBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): beginBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextBeforeCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): endBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): beginBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextBeforeCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): endBatchEdit on inactive InputConnection
I/TextInputPlugin( 5018): Composing region changed by the framework. Restarting the input method.
W/ListenableEditingState( 5018): a listener was added to EditingState while a batch edit was in progress
W/IInputConnectionWrapper( 5018): getTextAfterCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): getSelectedText on inactive InputConnection
W/IInputConnectionWrapper( 5018): endBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): beginBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): endBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): beginBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextBeforeCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextAfterCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): getSelectedText on inactive InputConnection
W/IInputConnectionWrapper( 5018): endBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): beginBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextBeforeCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): endBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): beginBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextBeforeCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): endBatchEdit on inactive InputConnection
I/TextInputPlugin( 5018): Composing region changed by the framework. Restarting the input method.
W/IInputConnectionWrapper( 5018): beginBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextBeforeCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextAfterCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): getSelectedText on inactive InputConnection
W/IInputConnectionWrapper( 5018): endBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): beginBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextBeforeCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): endBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): beginBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextBeforeCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): endBatchEdit on inactive InputConnection
I/TextInputPlugin( 5018): Composing region changed by the framework. Restarting the input method.
W/ListenableEditingState( 5018): a listener was added to EditingState while a batch edit was in progress
W/IInputConnectionWrapper( 5018): endBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): beginBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): endBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): beginBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextBeforeCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextAfterCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): getSelectedText on inactive InputConnection
W/IInputConnectionWrapper( 5018): endBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): beginBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextBeforeCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): endBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): beginBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextBeforeCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): endBatchEdit on inactive InputConnection
I/TextInputPlugin( 5018): Composing region changed by the framework. Restarting the input method.
W/IInputConnectionWrapper( 5018): beginBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextBeforeCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextAfterCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): getSelectedText on inactive InputConnection
W/IInputConnectionWrapper( 5018): endBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): beginBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextBeforeCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): endBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): beginBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextBeforeCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): endBatchEdit on inactive InputConnection
I/TextInputPlugin( 5018): Composing region changed by the framework. Restarting the input method.
W/IInputConnectionWrapper( 5018): clearMetaKeyStates on inactive InputConnection
W/IInputConnectionWrapper( 5018): beginBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextBeforeCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextAfterCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): getSelectedText on inactive InputConnection
W/IInputConnectionWrapper( 5018): endBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): beginBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextBeforeCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): endBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): beginBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextBeforeCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextAfterCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): getSelectedText on inactive InputConnection
W/IInputConnectionWrapper( 5018): endBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): beginBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextBeforeCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): endBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): beginBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextBeforeCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): endBatchEdit on inactive InputConnection
I/TextInputPlugin( 5018): Composing region changed by the framework. Restarting the input method.
W/IInputConnectionWrapper( 5018): beginBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextBeforeCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextAfterCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): getSelectedText on inactive InputConnection
W/IInputConnectionWrapper( 5018): endBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): beginBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextBeforeCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): endBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): beginBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextBeforeCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): endBatchEdit on inactive InputConnection
I/TextInputPlugin( 5018): Composing region changed by the framework. Restarting the input method.
W/IInputConnectionWrapper( 5018): beginBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextBeforeCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextAfterCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): getSelectedText on inactive InputConnection
W/IInputConnectionWrapper( 5018): endBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): beginBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextBeforeCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): endBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): beginBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextBeforeCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): endBatchEdit on inactive InputConnection
I/TextInputPlugin( 5018): Composing region changed by the framework. Restarting the input method.
W/IInputConnectionWrapper( 5018): beginBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): endBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): beginBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextBeforeCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextAfterCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): getSelectedText on inactive InputConnection
W/IInputConnectionWrapper( 5018): endBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): beginBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextBeforeCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): endBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): beginBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextBeforeCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): endBatchEdit on inactive InputConnection
I/TextInputPlugin( 5018): Composing region changed by the framework. Restarting the input method.
W/IInputConnectionWrapper( 5018): beginBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextBeforeCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextAfterCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): getSelectedText on inactive InputConnection
W/IInputConnectionWrapper( 5018): endBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): beginBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextBeforeCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): endBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): beginBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextBeforeCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): endBatchEdit on inactive InputConnection
I/TextInputPlugin( 5018): Composing region changed by the framework. Restarting the input method.
W/IInputConnectionWrapper( 5018): beginBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextBeforeCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextAfterCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): getSelectedText on inactive InputConnection
W/IInputConnectionWrapper( 5018): endBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): beginBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextBeforeCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): endBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): beginBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextBeforeCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): endBatchEdit on inactive InputConnection
I/TextInputPlugin( 5018): Composing region changed by the framework. Restarting the input method.
W/IInputConnectionWrapper( 5018): beginBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextBeforeCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): getTextAfterCursor on inactive InputConnection
W/IInputConnectionWrapper( 5018): getSelectedText on inactive InputConnection
W/IInputConnectionWrapper( 5018): endBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): beginBatchEdit on inactive InputConnection
W/IInputConnectionWrapper( 5018): endBatchEdit on inactive InputConnection
W/System  ( 5018): Ignoring header X-Firebase-Locale because its value was null.
E/flutter ( 5018): [ERROR:flutter/lib/ui/ui_dart_state.cc(199)] Unhandled Exception: NoSuchMethodError: The getter 'user' was called on null.
E/flutter ( 5018): Receiver: null
E/flutter ( 5018): Tried calling: user
E/flutter ( 5018): #0      Object.noSuchMethod (dart:core-patch/object_patch.dart:54:5)
E/flutter ( 5018): #1      _RegisterationFormState.build.<anonymous closure>.<anonymous closure> (package:vendorapp/widgets/registertion_form.dart:337:41)
E/flutter ( 5018): #2      _rootRunUnary (dart:async/zone.dart:1362:47)
E/flutter ( 5018): #3      _CustomZone.runUnary (dart:async/zone.dart:1265:19)
E/flutter ( 5018): <asynchronous suspension>
E/flutter ( 5018): 
I/zygote  ( 5018): Background concurrent copying GC freed 35177(1436KB) AllocSpace objects, 0(0B) LOS objects, 57% free, 1140KB/2MB, paused 5.919ms total 30.413ms
D/EGL_emulation( 5018): eglMakeCurrent: 0xa6285e00: ver 2 0 (tinfo 0x8c340180)

【问题讨论】:

【参考方案1】:

我自己解决。

    卸载应用程序。 运行“flutter clean” 运行“flutter pub get”

再次运行应用程序即可解决问题。

【讨论】:

【参考方案2】:

credential.user?.uid!=null 用户不能为空。

class AuthProvider extends ChangeNotifier 
  FirebaseAuth _authData = FirebaseAuth.instance;

  User user = User(); // added

user = FirebaseAuth.instance.currentUser;

你可以试试这个方法吗?

【讨论】:

感谢您的回复,但它给出了这个错误The class User doesn't have a default constructor. (Documentation) Try using one of the named constructors defined in 'User' 如果在第一个文件的最后看到,我已经在saveVendorData 中添加了这个User user = FirebaseAuth.instance.currentUser;

以上是关于在 null 上调用了 getter 'user'的主要内容,如果未能解决你的问题,请参考以下文章

在 null 上调用了 getter 'classification'

例外:NoSuchMethodError:在 null 上调用了 getter 'uid'。接收方:null 尝试调用:uid

在 null 上调用了 getter 'keys'

错误“在 null 上调用了 getter 'userEmail'

在 null 上调用了 getter '_controller'。扑

如何修复“在 null 上调用了 getter “文档”。飘飘然