Flutter本地数据存储插件localfire的使用

发布于 1周前 作者 yibo5220 来自 Flutter

Flutter本地数据存储插件localfire的使用

pub package

关于Localfire

Localfire 是一个用于在 Flutter 应用程序中进行本地数据存储的插件。它基于 SQLite 数据库,可以轻松地进行数据的增删改查操作。

安装 Localfire

首先,在 pubspec.yaml 文件中添加 Localfire 依赖:

dependencies:
  localfire: ^1.0.0

然后运行 flutter pub get 来安装依赖。

初始化数据库

在使用 Localfire 插件之前,需要初始化数据库。创建一个新的 Dart 文件(例如 database.dart),并在其中编写初始化代码:

import 'package:localfire/localfire.dart';

class DatabaseHelper {
  static final DatabaseHelper _instance = DatabaseHelper._internal();
  factory DatabaseHelper() => _instance;
  DatabaseHelper._internal();

  Database? _db;

  Future<Database?> get db async {
    if (_db != null) return _db;
    _db = await initializeDatabase();
    return _db;
  }

  Future<Database> initializeDatabase() async {
    var databasesPath = await getDatabasesPath();
    String path = "$databasesPath/locally.db";

    var localfireDb = await openDatabase(path, version: 1, onCreate: _onCreate);
    return localfireDb;
  }

  void _onCreate(Database db, int version) async {
    await db.execute(
      "CREATE TABLE users ("
      "id INTEGER PRIMARY KEY,"
      "name TEXT,"
      "age INTEGER"
      ")"
    );
  }
}

插入数据

在你的 Flutter 应用程序中插入数据到 users 表中:

import 'package:flutter/material.dart';
import 'database.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text("Localfire Example")),
        body: Center(child: InsertDataButton()),
      ),
    );
  }
}

class InsertDataButton extends StatefulWidget {
  @override
  _InsertDataButtonState createState() => _InsertDataButtonState();
}

class _InsertDataButtonState extends State<InsertDataButton> {
  DatabaseHelper dbHelper = DatabaseHelper();

  void insertUser() async {
    var dbClient = await dbHelper.db;
    await dbClient!.insert(
      'users',
      {
        'name': 'John Doe',
        'age': 30,
      },
      conflictAlgorithm: ConflictAlgorithm.replace,
    );
    print('User inserted');
  }

  @override
  Widget build(BuildContext context) {
    return ElevatedButton(
      onPressed: () async {
        await insertUser();
      },
      child: Text('Insert User'),
    );
  }
}

查询数据

查询数据库中的数据,并在控制台打印结果:

Future<void> queryUsers() async {
  var dbClient = await dbHelper.db;
  List<Map<String, dynamic>> users = await dbClient!.query('users');

  for (var user in users) {
    print('User ID: ${user['id']}, Name: ${user['name']}, Age: ${user['age']}');
  }
}

queryUsers 方法调用添加到按钮点击事件中:

ElevatedButton(
  onPressed: () async {
    await insertUser();
    await queryUsers();
  },
  child: Text('Insert and Query User'),
),

更多关于Flutter本地数据存储插件localfire的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter本地数据存储插件localfire的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


localstore 是一个轻量级的 Flutter 插件,用于在本地存储简单的键值对数据。它基于 SharedPreferences,但提供了更简单的 API,适合存储小型数据。

安装 localstore 插件

首先,你需要在 pubspec.yaml 文件中添加 localstore 依赖:

dependencies:
  flutter:
    sdk: flutter
  localstore: ^0.5.0

然后运行 flutter pub get 来安装依赖。

使用 localstore

1. 导入包

import 'package:localstore/localstore.dart';

2. 初始化 Localstore

你可以通过 Localstore.instance 来获取 Localstore 的单例对象。

final db = Localstore.instance;

3. 存储数据

你可以使用 collection 方法来创建一个集合(类似于表),然后使用 doc 方法来创建一个文档(类似于行),并使用 set 方法存储数据。

void saveData() async {
  final user = db.collection('users').doc('user1');
  await user.set({
    'name': 'John Doe',
    'age': 30,
    'email': 'john.doe@example.com',
  });
}

4. 读取数据

你可以使用 get 方法来读取数据。

void readData() async {
  final user = db.collection('users').doc('user1');
  final data = await user.get();
  print(data); // {name: John Doe, age: 30, email: john.doe@example.com}
}

5. 更新数据

你可以使用 set 方法来更新数据。它会覆盖原有的数据。

void updateData() async {
  final user = db.collection('users').doc('user1');
  await user.set({
    'name': 'Jane Doe',
    'age': 25,
    'email': 'jane.doe@example.com',
  });
}

6. 删除数据

你可以使用 delete 方法来删除数据。

void deleteData() async {
  final user = db.collection('users').doc('user1');
  await user.delete();
}

7. 获取所有文档

你可以使用 collection 方法来获取集合中的所有文档。

void getAllDocuments() async {
  final users = db.collection('users');
  final data = await users.get();
  print(data); // {user1: {name: John Doe, age: 30, email: john.doe@example.com}}
}

完整示例

import 'package:flutter/material.dart';
import 'package:localstore/localstore.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Localstore Example'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              ElevatedButton(
                onPressed: saveData,
                child: Text('Save Data'),
              ),
              ElevatedButton(
                onPressed: readData,
                child: Text('Read Data'),
              ),
              ElevatedButton(
                onPressed: updateData,
                child: Text('Update Data'),
              ),
              ElevatedButton(
                onPressed: deleteData,
                child: Text('Delete Data'),
              ),
              ElevatedButton(
                onPressed: getAllDocuments,
                child: Text('Get All Documents'),
              ),
            ],
          ),
        ),
      ),
    );
  }

  final db = Localstore.instance;

  void saveData() async {
    final user = db.collection('users').doc('user1');
    await user.set({
      'name': 'John Doe',
      'age': 30,
      'email': 'john.doe@example.com',
    });
  }

  void readData() async {
    final user = db.collection('users').doc('user1');
    final data = await user.get();
    print(data); // {name: John Doe, age: 30, email: john.doe@example.com}
  }

  void updateData() async {
    final user = db.collection('users').doc('user1');
    await user.set({
      'name': 'Jane Doe',
      'age': 25,
      'email': 'jane.doe@example.com',
    });
  }

  void deleteData() async {
    final user = db.collection('users').doc('user1');
    await user.delete();
  }

  void getAllDocuments() async {
    final users = db.collection('users');
    final data = await users.get();
    print(data); // {user1: {name: John Doe, age: 30, email: john.doe@example.com}}
  }
}
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!