繁体   English   中英

Flutter SQFLite 数据库

[英]Flutter SQFLite Database

我一直在尝试使用 flutter 编写应用程序。 该应用程序具有与所有基本应用程序一样的登录/注册功能。 为此,我使用了 API 链接,我得到的响应是 JSON 格式。 响应包含用户 ID、姓名、年龄等数据。我想将此数据存储在设备上的本地数据库中,以便我可以使用这些数据显示一些信息并登录帐户,而无需用户一次又一次地输入详细信息。 我一直在尝试各种方法来实现这一点,但我无法做到。 我已经按照 sqflite 的官方文档进行了操作,但未能成功运行。 我真的很期待我能得到的任何帮助。

先感谢您。 如果您需要任何数据/代码,请告诉我,我会发布相同的。

1.实现对pubspec.yaml的以下依赖

 sqflite: ^2.0.0+3
(dependencies:
  flutter:
    sdk: flutter
  cupertino_icons: ^1.0.3
  sqflite: ^2.0.0+3)

2.创建model class

class Student {
  int id;
  String name;
  Student(this.id, this.name);

  Map<String, dynamic> toMap() {
    var map = <String, dynamic>{
      'id': id,
      'name': name,
    };
    return map;
  }

  Student.fromMap(Map<String, dynamic> map) {
    id = map['id'];
    name = map['name'];
  }
}

3.创建dbhelper class

import 'package:flutter_sqlite_crud/student_model.dart';
import 'package:sqflite/sqflite.dart';
import 'dart:io' as io;
import 'package:path/path.dart';
import 'package:path_provider/path_provider.dart';

class DBHelper {
  static Database _db;
  Future<Database> get db async {
    if (_db != null) {
      return _db;
    }
    _db = await initDatabase();
    return _db;
  }

  initDatabase() async {
    io.Directory documentDirectory = await getApplicationDocumentsDirectory();
    String path = join(documentDirectory.path, 'student.db');
    var db = await openDatabase(path, version: 1, onCreate: _onCreate);
    return db;
  }

  _onCreate(Database db, int version) async {
    await db
        .execute('CREATE TABLE student (id INTEGER PRIMARY KEY, name TEXT)');
  }

  Future<Student> add(Student student) async {
    var dbClient = await db;
    student.id = await dbClient.insert('student', student.toMap());
    return student;
  }

  Future<List<Student>> getStudents() async {
    var dbClient = await db;
    List<Map> maps = await dbClient.query('student', columns: ['id', 'name']);
    List<Student> students = [];
    if (maps.length > 0) {
      for (int i = 0; i < maps.length; i++) {
        students.add(Student.fromMap(maps[i]));
      }
    }
    return students;
  }

  Future<int> delete(int id) async {
    var dbClient = await db;
    return await dbClient.delete(
      'student',
      where: 'id = ?',
      whereArgs: [id],
    );
  }

  Future<int> update(Student student) async {
    var dbClient = await db;
    return await dbClient.update(
      'student',
      student.toMap(),
      where: 'id = ?',
      whereArgs: [student.id],
    );
  }

  Future close() async {
    var dbClient = await db;
    dbClient.close();
  }
}

4.制作UI设计class创建....

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM