I would like the onCameraMove
method to be called when moveCamera
is called.
I tried to mock platform channel without success.
import 'dart:async';
import 'package:flutter/widgets.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
void main() {
TestWidgetsFlutterBinding.ensureInitialized();
testWidgets('GoogleMaps onCameraMove', (WidgetTester tester) async {
final Completer<GoogleMapController> controllerCompleter =
Completer<GoogleMapController>();
final cameraMoveCompleter = Completer<bool>();
await tester.pumpWidget(Directionality(
textDirection: TextDirection.ltr,
child: GoogleMap(
initialCameraPosition: const CameraPosition(target: LatLng(1, 2)),
onMapCreated: (GoogleMapController c) {
controllerCompleter.complete(c);
},
onCameraMove: (position) {
cameraMoveCompleter.complete(true);
},
),
));
await tester.pumpAndSettle();
final GoogleMapController controller = await controllerCompleter.future;
await controller.moveCamera(CameraUpdate.newLatLng(const LatLng(2, 3)));
await tester.pumpAndSettle();
expect(cameraMoveCompleter.isCompleted, true);
});
}