flutter 数据持久化之sqflite

  • sqflite: 是一款轻量级的关系型数据库,类似SQLite. 支持iOS和Android。适用于存储数据库 , 表类型的数据.

  • 使用:

  • 添加依赖

  • dependencies:
      flutter:
        sdk: flutter
    
      ...
      #sqflite插件
      sqflite: ^1.1.6+1

    先练习一下官方文档上面的一些基础使用方法

  • _createDB() async {
        //获取数据库默认路径
        var databasePath = await getDatabasesPath();
        print('database default path is $databasePath');
        //join 需要import 'package:path/path.dart';
        String path = join(databasePath, 'order.db');
    
        await deleteDatabase(path);
        //打开数据库
        Database database = await openDatabase(path, version: 1,
            onCreate: (Database db, int version) async {
          //建表
          await db.execute(
              'CREATE TABLE Test (id INTEGER PRIMARY KEY, memberName TEXT, dynamicBottom TEXT, productName TEXT)');
        });
    
        //insert
        await database.transaction((txn) async {
          int id1 = await txn.rawInsert(
              'INSERT INTO Test(memberName, dynamicBottom, productName) VALUES("岑需顿", "2019/07/12创建", "2018款 朗逸 1.5L 手动风尚版")');
          print('inserted1: $id1');
          int id2 = await txn.rawInsert(
              'INSERT INTO Test(memberName, dynamicBottom, productName) VALUES("余界才", "2019/07/10创建", "2018款 朗逸 1.5L 手动风尚版")');
          print('inserted2: $id2');
        });
    
        //update
    //     int count = await database.rawUpdate(
    //     'UPDATE Test SET name = ?, VALUE = ? WHERE name = ?',
    //     ['updated name', '9876', 'some name']);
    // print('updated: $count');
    
        List<Map> list = await database.rawQuery('SELECT * FROM Test');
        print(list);
    
    // Close the database
        await database.close();
      }

    然后以一个实际的订单列表页为例,做一下数据的存储,下面是我的书写代码的流程:

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Flutter提供了多种持久化存储数据的方法,包括: 1. Shared Preferences:用于存储键值对,适合存储简单的数据,如用户设置、应用程序配置等。 2. SQLite数据库:用于存储结构化数据,适合存储大量数据和复杂数据,如用户信息、应用程序数据等。 3. 文件存储:用于存储大型二进制数据,如图像、音频、视频等。 下面是使用Shared Preferences进行数据持久化的示例代码: ```dart import 'package:flutter/material.dart'; import 'package:shared_preferences/shared_preferences.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'Flutter Demo', home: MyHomePage(), ); } } class MyHomePage extends StatefulWidget { @override _MyHomePageState createState() => _MyHomePageState(); } class _MyHomePageState extends State<MyHomePage> { String _name = ''; @override void initState() { super.initState(); _loadName(); } void _loadName() async { SharedPreferences prefs = await SharedPreferences.getInstance(); setState(() { _name = prefs.getString('name') ?? ''; }); } void _saveName(String name) async { SharedPreferences prefs = await SharedPreferences.getInstance(); await prefs.setString('name', name); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Flutter Demo'), ), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ Text( 'Hello, $_name!', style: Theme.of(context).textTheme.headline4, ), TextField( onChanged: (value) => _saveName(value), ), ], ), ), ); } } ``` 在这个示例中,我们使用SharedPreferences来存储用户的名字。在初始化时,我们会调用_loadName()方法来加载存储在SharedPreferences中的名字。在用户输入名字后,我们会调用_saveName()方法来保存名字。每当名字发生变化时,UI会自动更新。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值