• Flutter数据持久化(shared_preferences、sqflite)


    shared_preferences

    示例

    static Future<void> setToken(String token) async {
        SharedPreferences prefs = await SharedPreferences.getInstance();
        await prefs.setString(TOKEN, token);
    }
    static Future<String?> getToken() async {
       SharedPreferences prefs = await SharedPreferences.getInstance();
       if (await prefs.containsKey(TOKEN)) {
          var json = await prefs.getString(TOKEN);
          return json;
       } else {
          return null;
      }
    }
    String? toeken = await DTWRoleManager.getToken();

    相关方法

    SharedPreferences prefs = await SharedPreferences.getInstance();
    prefs.setString(key, value)
    prefs.setBool(key, value)
    prefs.setDouble(key, value)
    prefs.setInt(key, value)
    prefs.setStringList(key, value)
    prefs.remove(key)
    prefs.clear()

    sqflite

    打开数据库(可同时新建或更新表)

      DTWDBHandle.internal();
      //数据库句柄
      static Database? _database;
      Future<Database?> get database async {
        if (_database == null) {
          var databasesPath = await getDatabasesPath();
          String path = join(databasesPath, DB_NAME_DTW);
          _database =
              await openDatabase(path, version: DB_VERSION, onCreate: _onCreate);
        }
        print(_database!.path.toString());
        return _database;
      }
    
      //创建表
      void _onCreate(Database db, int version) async {
        final sql = '''
          create table if not exists $DB_TABLE_SET (
          account text,
          pid text
        ''';
        var batch = db.batch();
        batch.execute(sql);
        await batch.commit();
      }
    
      //打开
      Future<Database?> open() async {
        return await database;
      }

    插入

    Database? db = await DTWDBHandle.internal().open();
    await db!.insert(DB_TABLE_SET, setData.toJson());
    await db.batch().commit();

    修改

     Database? db = await DTWDBHandle.internal().open();
     String sqlWhere = '''
            account='${setData.account}' and
            pid='${setData.pid}' 
            ''';
     db!.update(DB_TABLE_SET, setData.toJson(), where: sqlWhere);
     await db.batch().commit();

    删除

    Database? db = await DTWDBHandle.internal().open();
    String sql = '''
            delete from $DB_TABLE_SET where 
            account='${setData.account}' and
            pid='${setData.pid}'
            ''';
    db!.rawDelete(sql);
    await db.batch().commit();

    查询

    Database? db = await DTWDBHandle.internal().open();
    String sql = '''select * from $DB_TABLE_SET''';
    List<Map<String, dynamic>> maps = await db!.rawQuery(sql);
  • 相关阅读:
    Samba 4.0 RC3 发布
    SymmetricDS 3.1.7 发布,数据同步和复制
    Express.js 3.0 发布,Node.js 的高性能封装
    GIFLIB 5.0.1 发布,C语言的GIF处理库
    jQuery UI 1.9.1 发布
    SVN Access Manager 0.5.5.14 发布 SVN 管理工具
    DynamicReports 3.0.3 发布 Java 报表工具
    HttpComponents HttpClient 4.2.2 GA 发布
    AppCan 2.0 正式发布,推移动应用云服务
    Ruby 2.0 的新功能已经冻结
  • 原文地址:https://www.cnblogs.com/wangkejia/p/16203448.html
Copyright © 2020-2023  润新知