在這里,我再次詢問 Stack Overflow :),當我嘗試創建一個 GoogleMapsController 變數時,它會顯示這個
Non-nullable instance field 'googleMapController' must be initialized.
Try adding an initializer expression, or a generative constructor that initializes it, or mark it 'late'
我的控制器
GoogleMapController googleMapController;

如果我用這個
Completer<GoogleMapController> _controller = Completer();
完成者未定義
如果我使用
late GoogleMapController googleMapController;
當我使用控制器并說時它會發生錯誤
LateError (LateInitializationError: Field 'googleMapController' has not been initialized.)
我不明白為什么 youtube 上的人沒有收到這樣的錯誤
uj5u.com熱心網友回復:
由于空安全性,您的變數必須在創建時進行初始化,
如果您使用的是 Flutter 2.5.3 及更高版本,您可以使用 late 來告訴它它將在創建后但在使用之前進行初始化(這就是為什么 YouTube 上的人們沒有收到任何類似錯誤的原因使用晚):
late final Completer<GoogleMapController> _controller = Completer();
uj5u.com熱心網友回復:
這是使用相同版本的完整示例 flutter 2.8.1 , google_maps_flutter 2.1.1
class MapController extends StatefulWidget {
const MapController({Key? key}) : super(key: key);
@override
_MapControllerState createState() => _MapControllerState();
}
class _MapControllerState extends State<MapController> {
late final Completer<GoogleMapController> _controller = Completer();
static CameraPosition get _kGooglePlex => const CameraPosition(
target: LatLng(37.42796133580664, -122.085749655962),
zoom: 14.4746,
);
static CameraPosition get _kLake => const CameraPosition(
bearing: 192.8334901395799,
target: LatLng(37.43296265331129, -122.08832357078792),
tilt: 59.440717697143555,
zoom: 19.151926040649414);
@override
Widget build(BuildContext context) {
return Scaffold(
body: GoogleMap(
mapType: MapType.hybrid,
initialCameraPosition: _kGooglePlex,
onMapCreated: (GoogleMapController controller) {
_controller.complete(controller);
},
),
floatingActionButton: FloatingActionButton.extended(
onPressed: _goToTheLake,
label: const Text('To the lake!'),
icon: const Icon(Icons.directions_boat),
),
);
}
Future<void> _goToTheLake() async {
final GoogleMapController controller = await _controller.future;
controller.animateCamera(CameraUpdate.newCameraPosition(_kLake));
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/436532.html
上一篇:在iOS>=15上使狀態欄不透明
