首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FlutterMap LateInitializationError状态管理

FlutterMap LateInitializationError状态管理
EN

Stack Overflow用户
提问于 2022-02-11 11:26:29
回答 2查看 175关注 0票数 1

我正在尝试制作一个应用程序,使用Riverpod进行州管理和FlutterMaps。我已经为页面设置了通知程序,并且正在为地图页面使用(State)NotifierProvider。我正在构建一个搜索功能,它将进入一个搜索页面,该页面显示带有搜索结果的列表。当单击这些结果之一(在列表中)时,我将更新映射页的通知程序。然而,这里有一个棘手的部分:我想要根据搜索结果的LatLng (居中)更新地图。

我的说明符的实现包含:late MapController? _mapController;

我的地图页面被加载,并从Notifier:mapController: notifier.getMapController()获取mapController: notifier.getMapController()

使用Riverpod状态管理,这一切都应该可以工作,但是我得到了以下错误:

代码语言:javascript
复制
LateError (LateInitializationError: Field '_state@1225051772' has already been initialized.)

这个错误在MapController本身(这是FlutterMaps包的一部分)中,所以我不想碰它。有谁知道怎么解决这个问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-02-11 12:37:21

延迟错误是由取消将在应用程序启动前填充的变量引起的。

代码语言:javascript
复制
late MapController? _mapController;

这个定义是错误的。在这里,你是说这个值很快就会被补上。您还会说这个值可以是null。

代码语言:javascript
复制
late MapController _mapController;

如果这样做,则此变量在运行时不应为空。如果它为null,您将得到一个后期错误。

代码语言:javascript
复制
MapController? _mapController;

如果你这样做。这意味着该值可以为空。你使用的时候应该检查一下。像这样

代码语言:javascript
复制
void sameFunction(){
 if(_mapController!=null){
  ... your code
 // here make sure this variable is not null. For this reason ! i put this
  MapController anotherController=_mapController!;
}
}

代码语言:javascript
复制
 void sameFunction(){
  // Your code will not throw an error if this variable is null. Because specify that 
  //it can be null
     mapController?.moveTo(...)
    }

获得更详细的信息

票数 2
EN

Stack Overflow用户

发布于 2022-02-11 12:22:54

您应该删除延迟关键字,或者在initState方法中删除它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71079356

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档