【问题标题】:Flutter SQFLite DatabaseFlutter SQFLite 数据库
【发布时间】:2021-04-29 15:14:14
【问题描述】:

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

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

【问题讨论】:

    标签: flutter sharedpreferences flutter-dependencies sqflite


    【解决方案1】:

    1.在 pubspec.yaml 上实现以下依赖

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

    2.创建模型类

    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类

    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.make UI设计类创建......

    【讨论】:

      猜你喜欢
      • 2021-07-09
      • 2019-04-07
      • 2021-09-14
      • 2021-10-12
      • 2023-02-07
      • 2019-12-03
      • 2020-08-19
      • 2019-09-20
      • 1970-01-01
      相关资源
      最近更新 更多