您好,登錄后才能下訂單哦!
今天小編給大家分享一下Flutter模型動態化賦值的方法是什么的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
通過重載 [] 和 []= 運算符,讓模型具備像字典一樣讀寫值的方式;
類中實現編碼和解碼方法備用:
/// 編碼 Map<String, Object?>toJson() /// 解碼 ... fromJson(Map<String, Object?>? map)
實現
1、在運算符 [] 方法中用對象的編碼方法 toJson 獲取到對應的 Map 讀取對應屬性值即可;
2、在運算符 []= 方法中對比傳入的 key,相同則賦值;
var model = AppModel( appIcon: "assets/icon_light_unselected.png", appSize: "53.2M", appName: "QQ音樂 - 讓生活充滿音樂", appDate: "13:50", appDescription: """【全新設計 純凈享受】 -重塑全新視覺,輕盈/純凈/無擾/為Mac系統量身設計,從內而外純凈享受; -全新結構設計,整體交互優化/人性化和易用性大提升,操作體驗豪華升級"; """, appVersion: "版本 7.6.0", isShowAll: false ); print("appName before: ${model["appName"]}");//appName before: QQ音樂 - 讓生活充滿音樂 model["appName"] = "哈哈哈哈"; print("appName after: ${model["appName"]}");//appName after: 哈哈哈哈
///升級模型 class AppModel { AppModel({ this.appIcon = "-", this.appSize = "-", this.appName = "-", this.appDate = "-", this.appDescription = "-", this.appVersion = "-", this.isShowAll = false, }); /// App圖標 String appIcon; /// App名稱 String appName; /// App大小 String appSize; /// App更新日期 String appDate; /// App更新文案 String appDescription; /// App版本 String appVersion; /// App更新文案 bool isShowAll; static AppModel? fromJson(Map<String, Object?>? map) { if (map == null) { return null; } return AppModel( appIcon: map["appIcon"].toString(), appSize: map["appSize"].toString(), appName: map["appName"].toString(), appDate: map["appDate"].toString(), appDescription: map["appDescription"].toString(), appVersion: map["appVersion"].toString(), isShowAll: map["isShowAll"] as bool, ); } Map<String, Object?>toJson() { return { "appIcon": this.appIcon, "appSize": this.appSize, "appName": this.appName, "appDate": this.appDate, "appDescription": this.appDescription, "appVersion": this.appVersion, "isShowAll": this.isShowAll, }; } Object? operator [](String key){ final map = this.toJson(); final result = map[key]; return result; } void operator []=(String key, dynamic value){ switch (key) { case "appName": this.appName = value; break; case "appIcon": this.appIcon = value; break; case "appSize": this.appSize = value; break; case "appName": this.appName = value; break; case "appDate": this.appDate = value; break; case "appDescription": this.appDescription = value; break; case "appVersion": this.appVersion = value; break; case "isShowAll": this.isShowAll = value; break; default: break; } } }
以上就是“Flutter模型動態化賦值的方法是什么”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。