回答編集履歴
1
Completerを使っていた部分をnull許容変数に変更しました。このような場面でCompleterはないかなと思うので。
test
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
```dart
|
4
4
|
class MapSampleState extends State<MapSample> with WidgetsBindingObserver {
|
5
|
-
|
5
|
+
GoogleMapController? _controller;
|
6
6
|
final String _light = "[]";
|
7
7
|
late String _dark;
|
8
8
|
|
@@ -15,8 +15,8 @@
|
|
15
15
|
WidgetsBinding.instance.addObserver(this);
|
16
16
|
}
|
17
17
|
|
18
|
-
|
18
|
+
void _setMapStyle() {
|
19
|
-
|
19
|
+
_controller?.setMapStyle(
|
20
20
|
PlatformDispatcher.instance.platformBrightness == Brightness.light
|
21
21
|
? _light
|
22
22
|
: _dark);
|
@@ -30,7 +30,7 @@
|
|
30
30
|
|
31
31
|
@override
|
32
32
|
void didChangePlatformBrightness() {
|
33
|
-
_
|
33
|
+
_setMapStyle();
|
34
34
|
}
|
35
35
|
|
36
36
|
@override
|
@@ -42,8 +42,8 @@
|
|
42
42
|
target: LatLng(37.42796133580664, -122.085749655962),
|
43
43
|
),
|
44
44
|
onMapCreated: (GoogleMapController controller) {
|
45
|
-
_setMapStyle(controller);
|
46
|
-
_controller
|
45
|
+
_controller = controller;
|
46
|
+
_setMapStyle();
|
47
47
|
},
|
48
48
|
),
|
49
49
|
);
|
@@ -60,3 +60,8 @@
|
|
60
60
|
Androidで試したけどiOSでもたぶん同じだと思う(思いたい)。
|
61
61
|
|
62
62
|
提示された実装ではbuildメソッド内でui.window.platformBrightness == Brightness.lightで構築するウィジェットを切り替えようとしているけど、これは生成されるウィジェットは同一と判断されるので、State側は再構築されずonMapCreatedは呼び出されないのでスタイルの変更は行われないという状況になっている。
|
63
|
+
|
64
|
+
---
|
65
|
+
実装を一部修正。
|
66
|
+
Completerを使っていた部分をnull許容変数に変更。
|
67
|
+
google_maps_flutterのトップページにあるサンプルではCompleterを使っているのだけど、github側の例はほとんどが?のnull許容変数を使っていたのと、このような使い方でCompleterは適当ではないと思い変更しました。
|