Flutter |如何将登录响应存储在SQFlite数据库中

问题描述 投票:0回答:1

这里,我成功登录后即会登录,它将所有信息存储在SQFLite数据库中。这是我的登录响应,我不知道如何在颤抖的SQFlite中存储字符串数组和JSON。我需要将所有这些响应信息存储在sqlflite中。

任何人都可以帮助我根据此响应创建表。

{
  "loginUser": {
    "token": "eyJhbGciOiZTMzLTQ4NmItYmFhNS0wODRhMWI2Nzg3YjQiJhY2Nlc3MifQ.bLKz-y9W6VKXRXkG6fbxlrmcowRNupKL0g",
    "user": {
      "aclRoleId": [
        "cmr",
        "bsp"
      ],
      "confirmationSentAt": "2019-12-30T09:12:08Z",
      "confirmationToken": "$argon2id$v=19$m=131072,t=8,p=4$WQoFfhBUfabw7g1BgNuuxg$BmUEYNWTZHeCnY0xCqOT+nWEDNlXcrNIEWQZkA51oCk",
      "confirmedAt": null,
      "country": {
        "capital": "New Delhi",
        "code": "IND",
        "contactInfo": null,
        "currencyCode": "INR",
        "currencySymbol": "₹",
        "id": "3",
        "isdCode": "+91",
        "name": "India",
        "officialName": "The Republic of India"
      },
      "currentSignInAt": null,
      "email": "[email protected]",
      "failedAttempts": null,
      "id": "1",
      "language": {
        "code": "EN",
        "id": "1",
        "isActive": true,
        "name": "English"
      },
      "lockedAt": null,
      "meta": null,
      "mobile": "(999)-000-0040",
      "profile": {
        "first_name": "John",
        "last_name": "Doe"
      },
      "resetPasswordSentAt": null,
      "resetPasswordToken": null,
      "scopes": null,
      "signInCount": 12,
      "statusId": "confirmed",
      "token": null,
      "unlockToken": null
    }
  }
}
flutter dart flutter-layout flutter-dependencies sqflite
1个回答
0
投票

这里是一种方法:

import 'dart:io';
import 'package:kinderm8/models/user.dart';
import 'package:path/path.dart';
import 'dart:async';
import 'package:path_provider/path_provider.dart';
import 'package:sqflite/sqflite.dart';

class DatabaseHelper {
  static final DatabaseHelper _instance = new DatabaseHelper.internal();

  factory DatabaseHelper() => _instance;

  static Database _db;

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

  DatabaseHelper.internal();

  // create database
  initDb() async {
    Directory documentDirectory = await getApplicationDocumentsDirectory();
    String path = join(documentDirectory.path, "main.db");
    var ourDb = await openDatabase(path, version: 1, onCreate: _onCreate);
    return ourDb;
  }

  // create tables
  void _onCreate(Database db, int version) async {
    await db.execute(
        "CREATE TABLE User(uid INTEGER PRIMARY KEY, email TEXT, password TEXT,clientId TEXT,center TEXT,children TEXT)");
  }

  // insert user to db when login
  Future<int> saveUser(User user) async {
    var dbClient = await db;
    int res = await dbClient.insert("User", user.toMap());
    return res;
  }

  //delete use when logout
  Future<int> deleteUser() async {
    var dbClient = await db;
    int res = await dbClient.delete("User");
    getFirstUser();
    return res;
  }

  // check if the user logged in when app launch or any other place
  Future<bool> isLoggedIn() async {
    var dbClient = await db;
    var res = await dbClient.query("User");
    return res.length > 0 ? true : false;
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.