如何在flatter中以SQl表格式存储http请求的Json响应?
我正在从一个API读取数据。从响应中,我按照一些标准对数据进行了排序。因此,我想将响应存储在一个表中,然后使用SQL命令进行排序,并在列表视图中显示。但问题是,我无法准确地计算出大部分响应是如何完成的。我浏览的博客没有提供深入了解事物,我对JSON和Flatter不熟悉,有一段真正的凝灰岩时间。下面我将列出我所做的所有必要的事情: JSON数据:如何在flatter中以SQl表格式存储http请求的Json响应?,json,flutter,dart,Json,Flutter,Dart,我正在从一个API读取数据。从响应中,我按照一些标准对数据进行了排序。因此,我想将响应存储在一个表中,然后使用SQL命令进行排序,并在列表视图中显示。但问题是,我无法准确地计算出大部分响应是如何完成的。我浏览的博客没有提供深入了解事物,我对JSON和Flatter不熟悉,有一段真正的凝灰岩时间。下面我将列出我所做的所有必要的事情: JSON数据: { "list":[ { "id":"MnJJA0dbuw",
{
"list":[
{
"id":"MnJJA0dbuw",
"name":"Anand Sharma",
"img":"https://incablet-tests.s3.ap-south-1.amazonaws.com/conference-content/photos/sponsors/Anand.jpeg",
"gender":"m",
"age":46,
"date":"23/11/2019",
"status":"onboarded"
},
{
"id":"MnZmmmbuw",
"name":"Malashri Lal",
"img":"https://incablet-tests.s3.ap-south-1.amazonaws.com/conference-content/photos/sponsors/Vishesh.jpg",
"gender":"f",
"age":70,
"date":"01/10/2019",
"status":"active"
},
{
"id":"MnZy10dpsq",
"name":"Suhasini Haidar",
"img":"https://incablet-tests.s3.ap-south-1.amazonaws.com/conference-content/photos/sponsors/Suhasini.jpg",
"gender":"f",
"age":30,
"date":"23/03/2019",
"status":"left"
},
{
"id":"HOnmFt5jA",
"name":"Vishesh Mahajan",
"img":"https://incablet-tests.s3.ap-south-1.amazonaws.com/conference-content/photos/sponsors/Vishesh.jpg",
"gender":"m",
"age":34,
"date":"05/05/2019",
"status":"active"
},
{
"id":"MnZy10dxyz",
"name":"Anand Neelakantan",
"img":"https://incablet-tests.s3.ap-south-1.amazonaws.com/conference-content/photos/sponsors/Anand.jpeg",
"gender":"m",
"age":46,
"date":"03/10/2019",
"status":"left"
},
{
"id":"MnZy1JJbuw",
"name":"Malashri",
"img":"https://incablet-tests.s3.ap-south-1.amazonaws.com/conference-content/photos/sponsors/Malashri.jpg",
"gender":"f",
"age":65,
"date":"04/01/2019",
"status":"active"
},
{
"id":"JKAS10dbuw",
"name":"Meenakshi Madhavan",
"img":"https://incablet-tests.s3.ap-south-1.amazonaws.com/conference-content/photos/sponsors/Meenakshi.jpg",
"gender":"f",
"age":35,
"date":"01/03/2020",
"status":"left"
},
{
"id":"sOw8c6BOug",
"name":"Fintan",
"img":"https://incablet-tests.s3.ap-south-1.amazonaws.com/conference-content/photos/sponsors/Fintan.jpg",
"gender":"m",
"age":55,
"date":"09/12/2019",
"status":"onboarded"
},
{
"id":"MnZy10dlll",
"name":"Jaishree Periwal",
"img":"https://incablet-tests.s3.ap-south-1.amazonaws.com/conference-content/photos/sponsors/Jaishree.jpg",
"gender":"f",
"age":50,
"date":"01/02/2020",
"status":"active"
},
{
"id":"KbN3VELflA",
"name":"Anukriti Upadhyay",
"img":"https://incablet-tests.s3.ap-south-1.amazonaws.com/conference-content/photos/sponsors/Anukriti.jpg",
"gender":"f",
"age":30,
"date":"31/01/2020",
"status":"onboarded"
}
]
}
Podo文件:
// To parse this JSON data, do
//
// final customerInfo = customerInfoFromMap(jsonString);
import 'dart:convert';
CustomerInfo customerInfoFromMap(String str) => CustomerInfo.fromMap(json.decode(str));
String customerInfoToMap(CustomerInfo data) => json.encode(data.toMap());
class CustomerInfo {
CustomerInfo({
this.list,
});
List<ListElement> list;
factory CustomerInfo.fromMap(Map<String, dynamic> json) => CustomerInfo(
list: List<ListElement>.from(json["list"].map((x) => ListElement.fromMap(x))),
);
Map<String, dynamic> toMap() => {
"list": List<dynamic>.from(list.map((x) => x.toMap())),
};
}
class ListElement {
ListElement({
this.id,
this.name,
this.img,
this.gender,
this.age,
this.date,
this.status,
});
String id;
String name;
String img;
Gender gender;
int age;
String date;
Status status;
factory ListElement.fromMap(Map<String, dynamic> json) => ListElement(
id: json["id"],
name: json["name"],
img: json["img"],
gender: genderValues.map[json["gender"]],
age: json["age"],
date: json["date"],
status: statusValues.map[json["status"]],
);
Map<String, dynamic> toMap() => {
"id": id,
"name": name,
"img": img,
"gender": genderValues.reverse[gender],
"age": age,
"date": date,
"status": statusValues.reverse[status],
};
}
enum Gender { M, F }
final genderValues = EnumValues({
"f": Gender.F,
"m": Gender.M
});
enum Status { ONBOARDED, ACTIVE, LEFT }
final statusValues = EnumValues({
"active": Status.ACTIVE,
"left": Status.LEFT,
"onboarded": Status.ONBOARDED
});
class EnumValues<T> {
Map<String, T> map;
Map<T, String> reverseMap;
EnumValues(this.map);
Map<T, String> get reverse {
if (reverseMap == null) {
reverseMap = map.map((k, v) => new MapEntry(v, k));
}
return reverseMap;
}
}
//要解析此JSON数据,请执行以下操作
//
//最终customerInfo=customerInfoFromMap(jsonString);
导入“dart:convert”;
customerinfocustomerinfofrommap(stringstr)=>CustomerInfo.fromMap(json.decode(str));
字符串customerInfoToMap(customerinfodata)=>json.encode(data.toMap());
类CustomerInfo{
客户信息({
这个列表,
});
名单;
factory CustomerInfo.fromMap(Map json)=>CustomerInfo(
list:list.from(json[“list”].map((x)=>liselement.fromMap(x)),
);
映射toMap()=>{
“list”:list.from(list.map((x)=>x.toMap()),
};
}
类列表元素{
李斯特伦({
这个身份证,
这个名字,
这个.img,,
这个,性别,
这个年龄,
这个日期,
这个,身份,,
});
字符串id;
字符串名;
字符串img;
性别;
智力年龄;
字符串日期;
地位;
factory ListElement.fromMap(Map json)=>ListElement(
id:json[“id”],
名称:json[“名称”],
img:json[“img”],
性别:genderValues.map[json[“性别”]],
年龄:json[“年龄”],
日期:json[“日期”],
status:statusValues.map[json[“status”]],
);
映射toMap()=>{
“id”:id,
“姓名”:姓名,
“img”:img,
“性别”:性别价值观。反向[性别],
“年龄”:年龄,
“日期”:日期,
“状态”:状态值。反转[状态],
};
}
枚举性别{M,F}
最终性别值=枚举值({
“f”:性别,
“m”:性别
});
枚举状态{已加载,活动,左侧}
最终状态值=枚举值({
“活动”:Status.active,
“左”:Status.left,
“已登船”:状态。已登船
});
类枚举值{
地图;
地图反转地图;
枚举值(this.map);
地图反转{
if(reverseMap==null){
reverseMap=map.map((k,v)=>newMapEntry(v,k));
}
返回反向映射;
}
}
数据的数据库文件:
import 'dart:async';
import 'dart:io';
import 'package:flutterappincablet/podo_file.dart';
import 'package:path/path.dart';
import 'package:path_provider/path_provider.dart';
import 'package:sqflite/sqflite.dart';
class CustomerDatabaseProvider {
CustomerDatabaseProvider._();
static final CustomerDatabaseProvider db = CustomerDatabaseProvider._();
Database _database;
Future<Database> get database async {
if (_database != null) return _database;
_database = await getDatabaseInstance();
return _database;
}
Future<Database> getDatabaseInstance() async {
Directory directory = await getApplicationDocumentsDirectory();
String path = join(directory.path, "customer_data.db");
return await openDatabase(path, version: 1,
onCreate: (Database db, int version) async {
await db.execute(
"CREATE TABLE CUSTOMER_DATA(id TEXT PRIMARY KEY, name TEXT,img TEXT,gender TEXT,age INTEGER,date TEXT,status TEXT)");
});
}
Future<List<ListElement>> getAllPersons() async {
final db = await database;
var response = await db.query("CUSTOMER_DATA");
List<ListElement> list =
response.map((c) => ListElement.fromMap(c)).toList();
return list;
}
}
导入'dart:async';
导入“dart:io”;
导入“package:flatterappincablet/podo_file.dart”;
导入“package:path/path.dart”;
导入“package:path_provider/path_provider.dart”;
导入“包:sqflite/sqflite.dart”;
类CustomerDatabaseProvider{
CustomerDatabaseProvider.uz();
静态最终CustomerDatabaseProvider db=CustomerDatabaseProvider.uz();
数据库(u)数据库;;
未来获取数据库异步{
如果(_database!=null)返回_database;
_数据库=等待getDatabaseInstance();
返回数据库;
}
未来的getDatabaseInstance()异步{
目录目录=等待getApplicationDocumentsDirectory();
String path=join(directory.path,“customer_data.db”);
返回等待openDatabase(路径,版本:1,
onCreate:(数据库数据库,int版本)异步{
等待db.execute(
“创建表CUSTOMER_数据(id文本主键、名称文本、img文本、性别文本、年龄整数、日期文本、状态文本)”;
});
}
Future getAllPersons()异步{
最终数据库=等待数据库;
var响应=等待数据库查询(“客户数据”);
列表=
response.map((c)=>liselement.fromMap(c)).toList();
退货清单;
}
}
读取API并存储在数据库中的服务文件。这是我无法理解的地方:
import 'package:flutter/animation.dart';
import 'package:flutterappincablet/podo_file.dart';
import 'package:http/http.dart' as http;
import 'db_provider.dart';
Future<List<ListElement>> getData() async {
List<ListElement> list;
var apiUrl =
"https://5w05g4ddb1.execute-api.ap-south-1.amazonaws.com/dev/profile/listAll";
var res = await http.get(apiUrl);
if (res.statusCode == 200) {
var data = json.decode(res.body);
var rest = data["list"] as List;
// print(rest);
list = rest.map<ListElement>((json) => ListElement.fromJson(json)).toList();
// print('okay, ${rest[0]}!');
} else {
return null;
}
}
import'package:flatter/animation.dart';
导入“package:flatterappincablet/podo_file.dart”;
将“package:http/http.dart”导入为http;
导入“db_provider.dart”;
Future getData()异步{
名单;
阿皮乌尔变种=
"https://5w05g4ddb1.execute-api.ap-south-1.amazonaws.com/dev/profile/listAll";
var res=await http.get(apirl);
如果(res.statusCode==200){
var data=json.decode(res.body);
var rest=数据[“列表”]作为列表;
//打印(其余);
list=rest.map((json)=>liselement.fromJson(json)).toList();
//print('OK,${rest[0]}!');
}否则{
返回null;
}
}