我正在將云功能鏈接到我的 Flutter 模型。結果來自Cloud-Function
print(result.data);
print(result.data.runtimeType);
GameModel _incomingGame = GameModel.fromJson(result.data);
列印(結果。資料);
{
game: 'GTA',
played: ['ISODATE', ...]
}
列印(result.data.runtimeType);
flutter: _InternalLinkedHashMap<String, dynamic>
游戲模型
@JsonSerializable()
class GameModel {
String? game;
List? played;
GameModel(
this.game,
this.played,);
factory GameModel.fromJson(Map<String, dynamic> json) =>
_$GameModelFromJson(json);
Map<String, dynamic> toJson() => _$GameModelToJson(this);
}
game_model.g.dart
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'game_model.dart';
// **************************************************************************
// JsonSerializableGenerator
// **************************************************************************
GameModel _$GameModelFromJson(Map<String, dynamic> json) => GameModel(
json['game'] as String?,
json['played'] as List?,
);
Map<String, dynamic> _$GameModelToJson(GameModel instance) => <String, dynamic>{
'game': instance.game,
'played': instance.played,
};
傳入資料結果的 runtimeType 顯示它Map<String, dynamic>在控制臺中。但是,當我執行時GameModel.fromJson(),它會導致type '_InternalLinkedHashMap<Object?, Object?>' is not a subtype of type 'Map<String, dynamic>' in type cast.
我真的不明白為什么會發生這種情況?即使我做類似下面的事情也會導致相同的型別轉換錯誤。
GameModel _gameData = result.data;
var game = GameModel.fromJson(_gameData);
有什么辦法可以解決這個問題嗎?
uj5u.com熱心網友回復:
試試這些解決方案
GameModel _incomingGame = GameModel.fromJson(result.data as Map<String, dynamic>);
或者
GameModel _incomingGame = GameModel.fromJson(Map<String, dynamic>.from(result.data));
如果在執行型別轉換之前檢查型別也會更好
如果上述解決方案不起作用,請在呼叫云函式時添加型別
final func = FirebaseFunctions.instance.httpsCallable('gameFunction');
final result = await func<Map<String, dynamic>?>();
uj5u.com熱心網友回復:
試試這個解決方案:
GameModel.fromJson((result.data as Map<dynamic, dynamic>).cast<String, dynamic>())
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/374715.html
標籤:扑
