Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 基于服务定位器的颤振依赖注入_Flutter_Dart - Fatal编程技术网

Flutter 基于服务定位器的颤振依赖注入

Flutter 基于服务定位器的颤振依赖注入,flutter,dart,Flutter,Dart,我正在尝试开发一个具有多个页面的颤振应用程序。我有一个SignInService,我正在尝试使用get_it service locator将它注入不同的页面 服务定位器 final locator = GetIt.instance; void setupLocator() { locator.registerSingleton<SignInService>(SignInService()); locator.registerSingleton<LocationServ

我正在尝试开发一个具有多个页面的颤振应用程序。我有一个SignInService,我正在尝试使用get_it service locator将它注入不同的页面

服务定位器

final locator = GetIt.instance;
void setupLocator() {
  locator.registerSingleton<SignInService>(SignInService());
  locator.registerSingleton<LocationService>(LocationService());
}
当我登录时,firebaseUser变量正在该类中设置,并且该值不为null

当我在像这样的另一个页面中使用它时,我得到一个空值

E/颤振(20069): [错误:flatter/lib/ui/ui\u dart\u state.cc(157)]未处理的异常:NoSuchMethodError:对null调用了getter“uid”。 E/颤振(20069):接收器:空 E/flatter(20069):尝试呼叫:uid

另一页,省道

class _AnotherPageState extends State<AnotherPage> {
  final _signInService = locator<SignInService>();
  Firestore _firestore = Firestore.instance;

 _getUserCity() async {
    DocumentSnapshot snapshot = await _firestore
        .collection('users')
        .document(_signInService.firebaseUser.uid) //throws uid called on null error
        .get();
    _city = snapshot.data["city"];
  }


 _getPackage() async {
    _getUserCity();
    .
    .
}

@override
  initState(){
    super.initState();
    _getPackage();
  }

@override
  Widget build(BuildContext context) {
    return Scaffold(
        //...
     );
  }

class\u另一个页面状态扩展状态{
最终标志服务=定位器();
Firestore _Firestore=Firestore.instance;
_getUserCity()异步{
DocumentSnapshot快照=等待\u firestore
.collection('用户')
.document(\u signInService.firebaseUser.uid)//在出现null错误时抛出调用的uid
.get();
_城市=快照。数据[“城市”];
}
_getPackage()异步{
_getUserCity();
.
.
}
@凌驾
initState(){
super.initState();
_getPackage();
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
//...
);
}

如果您执行
GetIt.find(YourName);
作为第一行,则不为空如果执行
GetIt.find(YourName);
作为第一行,则不为空

class _AnotherPageState extends State<AnotherPage> {
  final _signInService = locator<SignInService>();
  Firestore _firestore = Firestore.instance;

 _getUserCity() async {
    DocumentSnapshot snapshot = await _firestore
        .collection('users')
        .document(_signInService.firebaseUser.uid) //throws uid called on null error
        .get();
    _city = snapshot.data["city"];
  }


 _getPackage() async {
    _getUserCity();
    .
    .
}

@override
  initState(){
    super.initState();
    _getPackage();
  }

@override
  Widget build(BuildContext context) {
    return Scaffold(
        //...
     );
  }