在 Flutter LateInitializationError 中初始化 <Position> 变量时遇到问题:字段“____”尚未初始化

宁福吉

Flutter 的新手。我的代码运行但遇到

在构建 FutureBuilder(dirty, state: _FutureBuilderState#e1a6f): LateInitializationError: Field 'initialPosition' has not been initialized 时抛出了以下 LateError 错误。

该代码用于设置从设备获取初始位置的 GoogleMap 小部件。我收到带有该错误的红色屏幕,但几秒钟后坐标被接收并正常进行并正确显示地图和位置。也尝试过未来,但我遇到了其他错误。它应该在 FutureBuilder 下吗?在 wrapper.dart 或我的 main.dart 中?

家.dart:

import 'package:flutter/material.dart';
import 'package:something/services/auth.dart';
import 'screens/map.dart';
import 'package:something/services/geolocator_service.dart';

class LakoApp extends StatefulWidget {
  @override


  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<LakoApp> {

  final AuthService _auth = AuthService();
  final _geolocatorService = GeolocatorService();
  late var initialPosition;

  // @override


  Future getInitialPosition <Position>() async {
    initialPosition = await _geolocatorService.getInitialLocation();
    return initialPosition;
  }

  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: FittedBox(
            child: Text('Something something'),
          ),
          actions: <Widget>[
           // irrelevant code
           // .....
           
          
        ],
        body:

        FutureBuilder(

            future: getInitialPosition(),
            builder: (context, snapshot) {
               return Map(initialPosition);
   
            }
        )
    );
  }  
  }
卡维捷杰夫

甚至在获取数据之前就已经构建了 Future Builders。所以,你应该检查它是否有数据。

 if (snapshot.hasData) {
                return Map(initialPosition); //Or snapshot.data.
              }else{
                return CircularProgressIndicator();
              }

这里还有其他问题。我将展示一些进一步的代码来改进你自己的代码。

您的方法返回接收名为 Position 的泛型参数的任何类型的 Future。我认为您想使用一种名为 position 的数据类型,因为您<Position>现在需要将其移动到这里,因为您编写它的方式对于您的特定示例毫无用处。

Future<Position> getInitialPosition () async {
    initialPosition = await _geolocatorService.getInitialLocation();
    return initialPosition;
  }

FutureBuilder 可以是这样的。

FutureBuilder<Position>(
            future: getInitialPosition(),
            builder: (context, snapshot) {
                if (snapshot.hasData) {
                return Map(snapshot.data);
              }else{
                return CircularProgressIndicator(); 
                //Display loading, you may adapt this widget to your interface or use some state management solution
              }
            }
        )

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

LateInitializationError:Flutter 中的字段尚未初始化

LateInitializationError:Flutter 中的字段“currentLatLng”尚未初始化

LateInitializationError:字段“快照”尚未初始化

LateInitializationError:字段“用户”尚未初始化

LateInitializationError:字段“chatRoomStream”尚未初始化

LateInitializationError:字段“___”尚未初始化

LateInitializationError:字段“initUserName”尚未初始化

LateInitializationError:字段“filterValue”尚未初始化

LateInitializationError:字段'insertFunction尚未初始化

LateInitializationError:本地“res”尚未初始化

LateInitializationError:字段“数据”尚未初始化,出现错误

颤振:LateInitializationError:字段“名称”尚未初始化

如何解决“LateInitializationError:字段‘userMap’尚未初始化。”

1LateInitializationError: 字段 'initUserName' 尚未初始化

颤振错误:LateInitializationError:字段“计数”尚未初始化

LateInitializationError:使用easy_localization 來國際化flutter 應用程序時,字段'_deviceLocale@66168148' 尚未初始化

`LateInitializationError:字段'_image@63124145'尚未初始化。`在颤动中

Flutter 字段 'replyMessage' 尚未初始化

LateInitializationError:字段“_email@25234523”已被初始化

未处理的错误 LateInitializationError:本地 'failureOrSuccess' 尚未初始化。发生在“SignInFormBloc”的实例中

Flutter 中未知的 LateInitializationError

Flutter:初始化程序中的条件

如何在Flutter中初始化文本字段

Flutter SQFlite 类中的实例变量初始化

如何在flutter中初始化FutureBuilder的后期变量?

与 Flutter 中的图像相关的 LateInitializationError

不可为空的实例字段必须被初始化和未处理的错误 LateInitializationError

在Java中初始化最终变量时遇到问题

Flutter:启动时初始化变量