【发布时间】:2021-09-02 09:05:38
【问题描述】:
Flutter 新手。我的代码运行但遇到了一个
以下 LateError 被抛出建设 FutureBuilder(脏,状态: _FutureBuilderState#e1a6f): LateInitializationError:字段'initialPosition'尚未 初始化。
代码是设置一个从设备获取初始位置的 GoogleMap 小部件。我得到带有该错误的红色屏幕,但几秒钟后,坐标被接收并正常进行并正确显示地图和位置。 future 也试过了,但我遇到了其他错误。它应该在 FutureBuilder 下吗?在 wrapper.dart 或我的 main.dart 中?
home.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);
}
)
);
}
}
【问题讨论】: