Skip to content
This repository was archived by the owner on Feb 22, 2023. It is now read-only.

Commit fa48a28

Browse files
committed
[google_maps_flutter] examples - move renderer initialization
1 parent 8086f9d commit fa48a28

File tree

4 files changed

+62
-50
lines changed

4 files changed

+62
-50
lines changed

packages/google_maps_flutter/google_maps_flutter/example/lib/main.dart

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
// Use of this source code is governed by a BSD-style license that can be
33
// found in the LICENSE file.
44

5+
import 'dart:async';
6+
57
import 'package:flutter/material.dart';
68
import 'package:google_maps_flutter_android/google_maps_flutter_android.dart';
79
import 'package:google_maps_flutter_platform_interface/google_maps_flutter_platform_interface.dart';
@@ -77,6 +79,34 @@ void main() {
7779
GoogleMapsFlutterPlatform.instance;
7880
if (mapsImplementation is GoogleMapsFlutterAndroid) {
7981
mapsImplementation.useAndroidViewSurface = true;
82+
initializeMapRenderer();
8083
}
8184
runApp(const MaterialApp(home: MapsDemo()));
8285
}
86+
87+
Completer<AndroidMapRenderer?>? _initializedRendererCompleter;
88+
89+
/// Initializes map renderer to with `latest` renderer type for Android platform.
90+
/// The renderer must be requested before creating GoogleMap instances,
91+
/// as the renderer can be initialized only once per application context.
92+
Future<AndroidMapRenderer?> initializeMapRenderer() async {
93+
if (_initializedRendererCompleter != null) {
94+
return _initializedRendererCompleter!.future;
95+
}
96+
97+
_initializedRendererCompleter = Completer<AndroidMapRenderer?>();
98+
99+
WidgetsFlutterBinding.ensureInitialized();
100+
101+
final GoogleMapsFlutterPlatform mapsImplementation =
102+
GoogleMapsFlutterPlatform.instance;
103+
if (mapsImplementation is GoogleMapsFlutterAndroid) {
104+
mapsImplementation.initializeWithRenderer(AndroidMapRenderer.latest).then(
105+
(AndroidMapRenderer initializedRenderer) =>
106+
_initializedRendererCompleter!.complete(initializedRenderer));
107+
} else {
108+
_initializedRendererCompleter!.complete(null);
109+
}
110+
111+
return _initializedRendererCompleter!.future;
112+
}

packages/google_maps_flutter/google_maps_flutter/example/lib/map_map_id.dart

Lines changed: 3 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,12 @@
44

55
// ignore_for_file: public_member_api_docs
66

7-
import 'dart:async';
87
import 'dart:io';
98

109
import 'package:flutter/material.dart';
1110
import 'package:google_maps_flutter/google_maps_flutter.dart';
1211
import 'package:google_maps_flutter_android/google_maps_flutter_android.dart';
13-
import 'package:google_maps_flutter_platform_interface/google_maps_flutter_platform_interface.dart';
12+
import 'main.dart';
1413
import 'page.dart';
1514

1615
class MapIdPage extends GoogleMapExampleAppPage {
@@ -42,7 +41,7 @@ class MapIdBodyState extends State<MapIdBody> {
4241

4342
@override
4443
void initState() {
45-
_initializeMapRenderer()
44+
initializeMapRenderer()
4645
.then<void>((AndroidMapRenderer? initializedRenderer) => setState(() {
4746
_initializedRenderer = initializedRenderer;
4847
}));
@@ -56,7 +55,7 @@ class MapIdBodyState extends State<MapIdBody> {
5655
case AndroidMapRenderer.legacy:
5756
return 'legacy';
5857
default:
59-
return 'initializing';
58+
return 'unknown';
6059
}
6160
}
6261

@@ -142,23 +141,3 @@ class MapIdBodyState extends State<MapIdBody> {
142141
});
143142
}
144143
}
145-
146-
Completer<AndroidMapRenderer?>? _initializedRendererCompleter;
147-
Future<AndroidMapRenderer?> _initializeMapRenderer() async {
148-
if (_initializedRendererCompleter != null) {
149-
return _initializedRendererCompleter!.future;
150-
}
151-
152-
_initializedRendererCompleter = Completer<AndroidMapRenderer?>();
153-
final GoogleMapsFlutterPlatform mapsImplementation =
154-
GoogleMapsFlutterPlatform.instance;
155-
if (mapsImplementation is GoogleMapsFlutterAndroid) {
156-
mapsImplementation.initializeWithRenderer(AndroidMapRenderer.latest).then(
157-
(AndroidMapRenderer initializedRenderer) =>
158-
_initializedRendererCompleter!.complete(initializedRenderer));
159-
} else {
160-
_initializedRendererCompleter!.complete(null);
161-
}
162-
163-
return _initializedRendererCompleter!.future;
164-
}

packages/google_maps_flutter/google_maps_flutter_android/example/lib/main.dart

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
// Use of this source code is governed by a BSD-style license that can be
33
// found in the LICENSE file.
44

5+
import 'dart:async';
6+
57
import 'package:flutter/material.dart';
68
import 'package:google_maps_flutter_android/google_maps_flutter_android.dart';
79
import 'package:google_maps_flutter_platform_interface/google_maps_flutter_platform_interface.dart';
@@ -76,5 +78,29 @@ void main() {
7678
final GoogleMapsFlutterPlatform platform = GoogleMapsFlutterPlatform.instance;
7779
// Default to Hybrid Composition for the example.
7880
(platform as GoogleMapsFlutterAndroid).useAndroidViewSurface = true;
81+
initializeMapRenderer();
7982
runApp(const MaterialApp(home: MapsDemo()));
8083
}
84+
85+
Completer<AndroidMapRenderer?>? _initializedRendererCompleter;
86+
87+
/// Initializes map renderer to with `latest` renderer type.
88+
/// The renderer must be requested before creating GoogleMap instances,
89+
/// as the renderer can be initialized only once per application context.
90+
Future<AndroidMapRenderer?> initializeMapRenderer() async {
91+
if (_initializedRendererCompleter != null) {
92+
return _initializedRendererCompleter!.future;
93+
}
94+
95+
_initializedRendererCompleter = Completer<AndroidMapRenderer?>();
96+
97+
WidgetsFlutterBinding.ensureInitialized();
98+
99+
final GoogleMapsFlutterPlatform platform = GoogleMapsFlutterPlatform.instance;
100+
(platform as GoogleMapsFlutterAndroid)
101+
.initializeWithRenderer(AndroidMapRenderer.latest)
102+
.then((AndroidMapRenderer initializedRenderer) =>
103+
_initializedRendererCompleter!.complete(initializedRenderer));
104+
105+
return _initializedRendererCompleter!.future;
106+
}

packages/google_maps_flutter/google_maps_flutter_android/example/lib/map_map_id.dart

Lines changed: 3 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,12 @@
44

55
// ignore_for_file: public_member_api_docs
66

7-
import 'dart:async';
8-
97
import 'package:flutter/material.dart';
108
import 'package:google_maps_flutter_android/google_maps_flutter_android.dart';
119
import 'package:google_maps_flutter_platform_interface/google_maps_flutter_platform_interface.dart';
1210

1311
import 'example_google_map.dart';
12+
import 'main.dart';
1413
import 'page.dart';
1514

1615
class MapIdPage extends GoogleMapExampleAppPage {
@@ -42,7 +41,7 @@ class MapIdBodyState extends State<MapIdBody> {
4241

4342
@override
4443
void initState() {
45-
_initializeMapRenderer()
44+
initializeMapRenderer()
4645
.then<void>((AndroidMapRenderer? initializedRenderer) => setState(() {
4746
_initializedRenderer = initializedRenderer;
4847
}));
@@ -56,7 +55,7 @@ class MapIdBodyState extends State<MapIdBody> {
5655
case AndroidMapRenderer.legacy:
5756
return 'legacy';
5857
default:
59-
return 'initializing';
58+
return 'unknown';
6059
}
6160
}
6261

@@ -134,25 +133,3 @@ class MapIdBodyState extends State<MapIdBody> {
134133
});
135134
}
136135
}
137-
138-
Completer<AndroidMapRenderer?>? _initializedRendererCompleter;
139-
Future<AndroidMapRenderer?> _initializeMapRenderer() async {
140-
// Map renderer can be requested only once.
141-
// Returns existing copleter future for serial requests.
142-
if (_initializedRendererCompleter != null) {
143-
return _initializedRendererCompleter!.future;
144-
}
145-
146-
_initializedRendererCompleter = Completer<AndroidMapRenderer?>();
147-
final GoogleMapsFlutterPlatform mapsImplementation =
148-
GoogleMapsFlutterPlatform.instance;
149-
if (mapsImplementation is GoogleMapsFlutterAndroid) {
150-
mapsImplementation.initializeWithRenderer(AndroidMapRenderer.latest).then(
151-
(AndroidMapRenderer initializedRenderer) =>
152-
_initializedRendererCompleter!.complete(initializedRenderer));
153-
} else {
154-
_initializedRendererCompleter!.complete(null);
155-
}
156-
157-
return _initializedRendererCompleter!.future;
158-
}

0 commit comments

Comments
 (0)