项目地址 GitHub:https://github.com/baiyuliang/Flutter-WanWan

moor文档地址:https://moor.simonbinder.eu/docs/getting-started/

我们在开发安卓或ios的数据库时,都会有各种强大的第三方rom框架,如安卓端的greenDao,room等,
这可以避免我们原生实现和手写sql的痛苦,那么同样,我们在开发flutter时,有没有同样强大的rom框架呢?答案是,必须的!就是上面提到的moor!

目前来说,该框架用的人还不是很多,所有你会发现,在百度moor的使用方法时,除了官方的英文文档,国内很少相关使用文章!

我们先来看一下官方的使用方法:



我最初在按照文档使用时,也是一头雾水,一是不清楚给的其它库最新版本号,二是在编译时遇到各种错误(其实是自己开发环境问题以及库的版本问题)!好在后来发现一个专门用于flutter的moor工具库:moor_flutter

moor_flutter就是对moor的又一层封装,使moor在flutter中使用更加简单方便!

首先,引入moor_flutter:

dependencies:flutter:sdk: fluttermoor_flutter: ^4.0.0dev_dependencies:flutter_test:sdk: fluttermoor_generator: ^4.4.1build_runner: ^2.1.1

moor_flutter最新版本4.0.0,moor_generator最新版本(也就是moor的最新版本)4.4.1!

执行pub get!

创建数据库文件夹,以及文件:

创建数据库表:我们可以像greenDao或Room一样,去写一个对应数据库表的类,当然要注意moor的写法:

@DataClassName("User")
class UserTable extends Table {IntColumn get id => integer().autoIncrement()();TextColumn get userid => text()();TextColumn get pwd => text()();TextColumn get nickname => text()();TextColumn get avatar => text()();TextColumn get imToken => text()();
}

@DataClassName(“User”):创建一个表名为User的表,UserTable继承Table类;

IntColumn 表示字段类型为int;

TextColumn 表示字段类型为String;

我们还可以设置自增字段以及主键等等;

表创建完毕后,定义数据库操作类:AppDatabase(名称自定义):

@UseMoor(tables: [UserTable])
class AppDatabase extends _$AppDatabase {AppDatabase._(): super(FlutterQueryExecutor.inDatabaseFolder(path: "db.sqlite", logStatements: true));static AppDatabase _instance;static AppDatabase getInstance() {if (_instance == null) {_instance = AppDatabase._();}return _instance;}int get schemaVersion => 1;Future<List<User>> getAllUsers() => select(userTable).get();Stream<List<User>> watchAllUsers() => select(userTable).watch();Future insertUser(User user) => into(userTable).insert(user);Future updateUser(User user) => update(userTable).replace(user);Future deleteUser(User user) => delete(userTable).delete(user);

这个其实我们一看就明白了,

@UseMoor(tables: [UserTable]),创建了几个表,就在这里添加几个[UserTable,XXXTable,…];

get schemaVersion => 1,数据库版本号为1;

select,into,update,delete即框架提供的增删改查方法,非常简单;

单例模式,可以保证数据库操作类不会重复创建数据库对象从而导致各种问题的出现!

最后需要注意的是,AppDatabase 所继承的_$AppDatabase,我们在执行编译前它是不存在的,所以报错不要怕!

我们先在类顶部声明一个part路径:

part 'db.g.dart';

然后,在命令行中执行:

flutter packages pub run build_runner build

flutter packages pub run build_runner watch

build和watch的区别

build:只编译生成一次,如果数据库字段有改动,则需要重新执行编译!

watch:持续编译,只要有改动就会自动编译!

执行后,生成 db.g.dart:



接下来,我们可以安装app了,打开安卓端数据库分析工具:


完美!

Flutter项目WanWan之数据库moor相关推荐

  1. Flutter项目WanWan之接入融云IM和自定义Plugin

    项目地址 GitHub:https://github.com/baiyuliang/Flutter-WanWan 融云IM-Flutter文档地址:https://docs.rongcloud.cn/ ...

  2. flutter如何访问mysql数据库_手把手教你在Flutter项目优雅的使用ORM数据库

    Flutter ORM数据库介绍 Flutter现在开发上最大的槽点可能就是数据库使用了,Flutter现在只提供了sqflite插件,这表明开发者手动写sql代码,建表.建索引.transation ...

  3. Flutter 5 大本地数据库解决方案

    Flutter 5 大本地数据库解决方案 原文 https://levelup.gitconnected.com/top-5-local-database-solutions-for-flutter- ...

  4. Flutter项目快速搭建指南

    本文字数:8683字 预计阅读时间:30 分钟 前言: 笔者在这之前已经有一年时间没有接触过flutter项目的开发了,目前由于新项目的需要,要重新开始搭建一个flutter项目.让我感到惊讶的是,f ...

  5. flutter和webapp_Flutter全平台!迁移现有Flutter项目到WEB端

    写在前面 Flutter 是 Google推出并开源的移动应用开发框架,主打跨平台.高保真.高性能.开发者可以通过 Dart语言开发 App,一套代码同时运行在 iOS .Android.web和桌面 ...

  6. Vscode 调试 Flutter 项目

    1.Vscode 中打开 flutter 项目进行开发 2.运行 Flutter 项目 flutter run r 键:点击后热加载,也就算是重新加载吧. p 键:显示网格,这个可以很好的掌握布局情况 ...

  7. 构建flutter项目

    为什么80%的码农都做不了架构师?>>>    Android Studio中无法创建Flutter项目的解决办法 在Windows或者在macOS平台下使用Android Stud ...

  8. 订单系统开发(仿淘宝和美团网) 之 项目总结(降低数据库并发量)

    原文:订单系统开发(仿淘宝和美团网) 之 项目总结(降低数据库并发量) 继上一篇"订单系统开发(仿淘宝和美团网) 之 项目总结(一)",这篇博客重点想说下订单系统开发的设计和有待优 ...

  9. 使用VS Code新建编译Flutter项目

    本文的前提是你已经安装好了VS Code,并且安装了Flutter和Dart扩展插件. 1. 新建Flutter项目 查看--命令面板,或者Ctrl + Shift + P 输入 Flutter: N ...

最新文章

  1. 浏览器--如何让登陆页面的表单不默认显示账号和密码
  2. Git中级用户的25个提示
  3. mysql sae_新浪SAE的mysql与百度SAE的代码区别?
  4. TCP三次握手建立连接四次挥手断开连接
  5. Docker学习总结(6)——通过 Docker 化一个博客网站来开启我们的 Docker 之旅
  6. java log4j 多个文件_为什么log4j会记录到两个单独的文件? [重复]
  7. 算法题:在一个字符串中找到只出现一次的字符。如输入abaccdeeff,则输出bd。
  8. red-hat Linux6-5的安装
  9. 基于Java毕业设计智慧后勤系统源码+系统+mysql+lw文档+部署软件
  10. 厨房电器机械EN60335-2-14检测标准及项目
  11. 游戏测试基础:缺陷等级
  12. 旋转向量解法(罗德里格公式推导及理解)
  13. 关于三星S9+ NFC绑定门禁卡
  14. DA0207 数据分析——数据分析之EXCEL
  15. Excel 控件Spire.XLS 7.12.130发布 | 附下载
  16. 编译原理学习笔记(二十六)~习题:构造基于LR(0)、LR(1)项目的识别活前缀的DFA
  17. 关于*\jre\lib\rt.jar无法访问的问题
  18. MySQL间隙锁(幻读解决原理)
  19. Part1 コンビニエンス・ストア編(1)---基本的な業務を知る
  20. 以 回车键 为结束标志的输入

热门文章

  1. TreeNode实用方法
  2. android oncreate添加代码出错',android – requestFeature()必须在super.onCreate添加内容错误之前调用...
  3. 向淘宝生态圈看齐——阿里云“云合计划”
  4. Keycloak 入门使用第一篇
  5. Spring IOC和DI之间的关系
  6. 设计模式之单例模式应用场景篇
  7. Jupyter Notebook使用-如何设置代码单元启用自动换行
  8. java elf_GitHub - lyz362502/Java-elf: Java-elf是一个轻量级接口测试框架
  9. 【MySQL】mac安装mysql并创建连接
  10. matlab实验一 图像增强