91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Flutter怎么用ORM框架管理數據庫

發布時間:2023-04-17 16:20:25 來源:億速云 閱讀:111 作者:iii 欄目:開發技術

本篇內容主要講解“Flutter怎么用ORM框架管理數據庫”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Flutter怎么用ORM框架管理數據庫”吧!

floor 數據庫版本升級

floor 框架同樣提供了數據庫版本號,當前使用的版本號使用注解配置。

@Database(version: 1, entities: [Memo])

當數據表結構發生變化時,就需要變更版本號指定新的版本。同時需要做如下處理:

  • 更新實體類:比如增加或減少字段,變更字段類型等等;

  • 編寫遷移處理Migration類對象,Migration 類定義如下:

Migration(this.startVersion, this.endVersion, this.migrate)

其中第一個參數為起始版本號,第二個參數為要遷移到的版本號,最后是一個遷移處理函數,函數定義為:Future<void> Function(sqflite.Database database) migrate。我們要做的數據表變動就在這個函數里處理。

將編寫好的Migration類對象添加到數據庫初始化的 addMigrations 方法中,addMigrations方法接收一個Migration對象數組,因此是支持多種遷移的,比如從版本1遷移到版本3的遷移對象,從版本2遷移到版本3的遷移對象,從而滿足多個版本同時遷移。

final database = await $FloorAppDatabase
    .databaseBuilder('app_database.db')
    .addMigrations([migration1to3, migration2to3])
    .build();

實體類變更后,需要用代碼生成命令重新生成數據庫操作的相關代碼。

看起來非常簡單,我們來看實際的例子。

版本升級實例

我們給之前的備忘錄增加一個分類(category)字段,可以設置備忘錄的分類,分類我們簡單地固定為預設的幾類。我們按照上面的步驟一步步編寫代碼即可。

變更版本:將數據庫版本號改為2;

@Database(version: 2, entities: [Memo])

在備忘錄類增加分類字段,由于已有數據的分類字段是 null 的,因此需要設置這個字段可為空Nullable;設置為非空也可以,只是需要在遷移時給舊版本已有數據相應字段設置非空初始值。

@entity
class Memo {
  @PrimaryKey(autoGenerate: true)
  final int? id;
  String title;
  String content;
  @ColumnInfo(name: 'created_time')
  DateTime createdTime;
  @ColumnInfo(name: 'modified_time')
  DateTime modifiedTime;
  String? category;
  List<String> tags;

  Memo({
    this.id,
    required this.title,
    required this.content,
    required this.createdTime,
    required this.modifiedTime,
    this.category = '',
    required this.tags,
  });
}

編寫數據庫遷移處理對象,并加入到版本遷移中。

final migration1to2 = Migration(1, 2, (database) async {
  await database.execute('ALTER TABLE Memo ADD COLUMN category TEXT');
  // 可選,設置舊版本字段初始值
  await database.update('Memo',{'category': ''});
});

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();

  final database = await $FloorMemoDatabase
      .databaseBuilder('app_database.db')
      .addMigrations([migration1to2]).build();

  final dao = database.memoDao;

  getIt.registerSingleton<MemoDao>(dao, signalsReady: true);

  runApp(const MyApp());
}

運行下面的命令生成代碼。

flutter packages pub run build_runner build

當然,我們也需要對 UI 相關的代碼進行變更,變更后的 UI 界面如下圖所示。

Flutter怎么用ORM框架管理數據庫

到此,相信大家對“Flutter怎么用ORM框架管理數據庫”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

青州市| 吉木萨尔县| 广汉市| 扬州市| 光泽县| 汾西县| 莫力| 南宁市| 大渡口区| 汪清县| 吐鲁番市| 即墨市| 西和县| 土默特右旗| 江山市| 安陆市| 万州区| 大港区| 沭阳县| 建宁县| 连州市| 绵竹市| 石棉县| 石首市| 海口市| 璧山县| 星子县| 大田县| 安阳市| 乡宁县| 拉萨市| 桂平市| 庐江县| 定襄县| 苍梧县| 喀喇沁旗| 托克托县| 略阳县| 永修县| 丹寨县| 文安县|