Firebase 始终返回空颤振的提供程序
我有一个提供程序对象,它上周一直在工作,直到我这样做Firebase 始终返回空颤振的提供程序,firebase,flutter,asynchronous,dart,flutter-provider,Firebase,Flutter,Asynchronous,Dart,Flutter Provider,我有一个提供程序对象,它上周一直在工作,直到我这样做 flutter channel stable flutter upgrade 现在,它总是返回null 这个问题发生在我的启动页面上。以下是该页面的内容: import 'dart:io'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:boots/helper/enum.dart'; impo
flutter channel stable
flutter upgrade
现在,它总是返回null
这个问题发生在我的启动页面上。以下是该页面的内容:
import 'dart:io';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:boots/helper/enum.dart';
import 'package:boots/helper/theme.dart';
import 'package:boots/page/Auth/selectAuthMethod.dart';
import 'package:boots/page/homePage.dart';
import 'package:boots/state/authState.dart';
import 'package:boots/widgets/customWidgets.dart';
import 'package:provider/provider.dart';
class SplashPage extends StatefulWidget {
SplashPage({Key key}) : super(key: key);
@override
_SplashPageState createState() => _SplashPageState();
}
class _SplashPageState extends State<SplashPage> {
@override
void initState() {
WidgetsBinding.instance.addPostFrameCallback((_) {
timer();
});
super.initState();
}
void timer() async {
Future.delayed(Duration(seconds: 1)).then((_) {
var state = Provider.of<AuthState>(context, listen: false);
state.getCurrentUser();
});
}
Widget _body() {
var height = 150.0;
return Container(
height: fullHeight(context),
width: fullWidth(context),
child: Container(
height: height,
width: height,
alignment: Alignment.center,
child: Container(
padding: EdgeInsets.all(50),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.all(
Radius.circular(10),
),
),
child: Stack(
alignment: Alignment.center,
children: <Widget>[
Platform.isIOS
? CupertinoActivityIndicator(
radius: 35,
)
: CircularProgressIndicator(
strokeWidth: 2,
),
Image.asset(
'assets/images/icon-480.png',
height: 30,
width: 30,
)
],
),
),
),
);
}
@override
Widget build(BuildContext context) {
var state = Provider.of<AuthState>(context);
return Scaffold(
backgroundColor: TwitterColor.white,
body: state.authStatus == AuthStatus.NOT_DETERMINED
? _body()
: state.authStatus == AuthStatus.NOT_LOGGED_IN
? WelcomePage()
: HomePage(),
);
}
}
接
flutter run --release
日志:
I/颤振(13941):
E/flatter(13941):[ERROR:flatter/lib/ui/ui\u dart\u state.cc(177)]未处理的异常:NoSuchMethodError:对null调用了方法“getCurrentUser”。
E/颤振(13941):接收器:空
E/flatter(13941):尝试调用:getCurrentUser()
E/颤振(13941):#0#SplashPageState.timer。(包装:靴子/页面/普通/飞溅。省道:31)
E/颤振(13941):#1 RootRunnary(dart:async/zone.dart:1198)
E/flatter(13941):#2_CustomZone.runUnary(dart:async/zone.dart:1100)
E/flatter(13941):#3 _FutureListener.handleValue(dart:async/future_impl.dart:143)
E/flatter(13941):#4未来。_传播到侦听器。handleValueCallback(dart:async/Future_impl.dart:696)
E/flatter(13941):#5未来。(dart:async/Future_impl.dart:725)
电子/颤振(13941):#6未来。_完成(dart:async/Future_impl.dart:519)
E/Flatter(13941):#7新未来。延迟。(dart:async/future.dart:323)
E/flatter(13941):#8_rootRun(dart:async/zone.dart:1182)
E/flatter(13941):#9_CustomZone.run(dart:async/zone.dart:1093)
E/flatter(13941):#10 _CustomZone.runguared(dart:async/zone.dart:997)
E/颤振(13941):#11_CustomZone.bindCallbackguared。(dart:async/zone.dart:1037)
E/flatter(13941):#12_rootRun(dart:async/zone.dart:1190)
E/flatter(13941):#13 _CustomZone.run(dart:async/zone.dart:1093)
E/颤振(13941):#14_CustomZone.bindCallback。(dart:async/zone.dart:1021)
E/flatter(13941):#15 TickerFuture.whencomplete或cancel.thunk(包:flatter/src/scheduler/ticker.dart:399)
E/flatter(13941):#16个计时器。(dart:isolate patch/Timer_impl.dart:397)
E/flatter(13941):#17 _定时器。_handleMessage(dart:隔离补丁/定时器_impl.dart:428)
E/颤振(13941):#18 RawReceivePortImpl.handleMessage(dart:isolate patch/isolate_patch.dart:168)
E/颤振(13941):
请我想纠正这个问题,因为我的应用程序无法再启动,由于这一点。非常感谢您的帮助 我的更新导致需要添加新的firebase依赖项 在pubspec.yaml中,必须添加:
firebase_core: ^0.5.2
总而言之,我必须补充一点
await Firebase.initializeApp();
就在之前
runApp(MyApp());
把这件事提上来
flutter run --release
I/flutter (13941):
E/flutter (13941): [ERROR:flutter/lib/ui/ui_dart_state.cc(177)] Unhandled Exception: NoSuchMethodError: The method 'getCurrentUser' was called on null.
E/flutter (13941): Receiver: null
E/flutter (13941): Tried calling: getCurrentUser()
E/flutter (13941): #0 _SplashPageState.timer.<anonymous closure> (package:boots/page/common/splash.dart:31)
E/flutter (13941): #1 _rootRunUnary (dart:async/zone.dart:1198)
E/flutter (13941): #2 _CustomZone.runUnary (dart:async/zone.dart:1100)
E/flutter (13941): #3 _FutureListener.handleValue (dart:async/future_impl.dart:143)
E/flutter (13941): #4 Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:696)
E/flutter (13941): #5 Future._propagateToListeners (dart:async/future_impl.dart:725)
E/flutter (13941): #6 Future._complete (dart:async/future_impl.dart:519)
E/flutter (13941): #7 new Future.delayed.<anonymous closure> (dart:async/future.dart:323)
E/flutter (13941): #8 _rootRun (dart:async/zone.dart:1182)
E/flutter (13941): #9 _CustomZone.run (dart:async/zone.dart:1093)
E/flutter (13941): #10 _CustomZone.runGuarded (dart:async/zone.dart:997)
E/flutter (13941): #11 _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:1037)
E/flutter (13941): #12 _rootRun (dart:async/zone.dart:1190)
E/flutter (13941): #13 _CustomZone.run (dart:async/zone.dart:1093)
E/flutter (13941): #14 _CustomZone.bindCallback.<anonymous closure> (dart:async/zone.dart:1021)
E/flutter (13941): #15 TickerFuture.whenCompleteOrCancel.thunk (package:flutter/src/scheduler/ticker.dart:399)
E/flutter (13941): #16 _Timer._runTimers (dart:isolate-patch/timer_impl.dart:397)
E/flutter (13941): #17 _Timer._handleMessage (dart:isolate-patch/timer_impl.dart:428)
E/flutter (13941): #18 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:168)
E/flutter (13941):
firebase_core: ^0.5.2
await Firebase.initializeApp();
runApp(MyApp());