我正在使用 Mapbox 地图,当我在模拟器中运行应用程序时,它运行良好。但是,在我的小部件测试中,该onMapCreated
方法从未被调用,这使得无法测试应用程序的行为。
我的 MapWidget(精简版):
class MapWidget extends StatefulWidget {
final LatLng initialCameraPositionCoordinates;
final double initialZoomLevel;
const MapWidget({
Key key,
@required this.initialCameraPositionCoordinates,
@required this.initialZoomLevel,
}) : super(key: key);
@override
State createState() => MapWidgetState();
}
class MapWidgetState extends State<MapWidget> {
@override
Widget build(BuildContext context) {
return BlocConsumer<Cubit, State>(
builder: (context, state) {
return MouseRegion(
cursor: MouseCursor.defer,
child: MapboxMap(
onMapCreated: _onMapCreated,
),
);
},
);
}
void _onMapCreated(MapboxMapController controller) async {
print("This is never called in the test");
}
相应的小部件测试如下所示:
void main() {
testWidgets("Mapbox", (WidgetTester tester) async {
await tester.pumpWidget(
BlocProvider(
create: (_) => _cubit,
child: MaterialApp(
home: MapWidget(
initialCameraPositionCoordinates:
_initialCameraPositionCorrdinates,
initialZoomLevel: _initialZoomLevel,
),
),
),
);
await tester.pump(Duration(seconds: 10));
});
}
没有抛出异常,这意味着它渲染得很好。但是,onMapCreated
从不打印中的打印语句。
在模拟器中运行应用程序时,会调用 print 语句。
有谁知道这里发生了什么?