diff --git a/packages/flutter_tools/lib/src/vmservice.dart b/packages/flutter_tools/lib/src/vmservice.dart index 545443ee8f..9fe973e4a1 100644 --- a/packages/flutter_tools/lib/src/vmservice.dart +++ b/packages/flutter_tools/lib/src/vmservice.dart @@ -620,7 +620,12 @@ class ServiceEvent extends ServiceObject { _extensionKind = map['extensionKind']; _extensionData = map['extensionData']; } - _timelineEvents = map['timelineEvents']; + // map['timelineEvents'] is List which can't be assigned to + // List> directly. Unfortunately, we previously didn't + // catch this exception because json_rpc_2 is hiding all these exceptions + // on a Stream. + final List dynamicList = map['timelineEvents']; + _timelineEvents = dynamicList?.cast>(); } bool get isPauseEvent { @@ -1293,7 +1298,8 @@ class Isolate extends ServiceObjectOwner { Future flutterAlreadyPaintedFirstUsefulFrame() async { final Map result = await invokeFlutterExtensionRpcRaw('ext.flutter.didSendFirstFrameEvent'); - return result['enabled'] == 'true'; + // result might be null when the service extension is not initialized + return result != null && result['enabled'] == 'true'; } Future> uiWindowScheduleFrame() {