flutter - Flutter Sqflite 如何从表中获取数据并将其传递给提供者
问题描述
在我的应用程序中,这些是包含我从 API 解析的用户数据的 localdb。我的目标是从本地表中获取这些值,并使用提供者将这些值用于状态管理。我为表创建了一个模型类
class UserTable {
int? id;
String? accountDetails;
String? accountId;
String? childName;
String? childGender;
int? expiry;
int? finalSequenceNo;
int? packageIndex;
String? parentName;
String? productType;
String? userId;
int? age;
int? dob;
int? nextSyncTime;
String? productSubType;
String? validTill;
int? latestUpdatePkgSeqNo;
int? guidedTour;
UserTable(
{this.id,
this.accountDetails,
this.accountId,
this.childName,
this.childGender,
this.expiry,
this.finalSequenceNo,
this.packageIndex,
this.parentName,
this.productType,
this.userId,
this.age,
this.dob,
this.nextSyncTime,
this.productSubType,
this.validTill,
this.latestUpdatePkgSeqNo,
this.guidedTour,
});
Map<String, dynamic> toMap() {
var map = <String, dynamic>{
DatabaseHelper.USER_TABLE_ID: id,
DatabaseHelper.ACCOUNT_DETAILS: accountDetails,
DatabaseHelper.ACCOUNT_ID: accountId,
DatabaseHelper.USER_CHILD_NAME: childName,
DatabaseHelper.USER_CHILD_GENDER: childGender,
DatabaseHelper.EXPIRY: expiry,
DatabaseHelper.FINAL_SEQ_NO: finalSequenceNo,
DatabaseHelper.PACKAGE_INDEX: packageIndex,
DatabaseHelper.PARENT_NAME: parentName,
DatabaseHelper.PRODUCT_TYPE: productType,
DatabaseHelper.USER_ID: userId,
DatabaseHelper.AGE: age,
DatabaseHelper.DOB: dob,
DatabaseHelper.NEXT_SYNC_TIME: nextSyncTime,
DatabaseHelper.PRODUCT_SUB_TYPE: productSubType,
DatabaseHelper.VALID_TILL: validTill,
DatabaseHelper.LATEST_UPDATED_PKG_SEQ_NO: latestUpdatePkgSeqNo,
DatabaseHelper.GUIDED_TOUR: guidedTour,
};
if (id != null) {
map[DatabaseHelper.USER_TABLE_ID] = id;
}
return map;
}
UserTable.fromMap(Map<String, dynamic> map) {
id = map[DatabaseHelper.USER_TABLE_ID];
accountDetails = map[DatabaseHelper.ACCOUNT_DETAILS];
accountId = map[DatabaseHelper.ACCOUNT_ID];
childName = map[DatabaseHelper.USER_CHILD_NAME];
childGender = map[DatabaseHelper.USER_CHILD_GENDER];
expiry = map[DatabaseHelper.EXPIRY];
finalSequenceNo = map[DatabaseHelper.FINAL_SEQ_NO];
packageIndex = map[DatabaseHelper.PACKAGE_INDEX];
parentName = map[DatabaseHelper.PARENT_NAME];
productType = map[DatabaseHelper.PRODUCT_TYPE];
userId = map[DatabaseHelper.USER_ID];
age = map[DatabaseHelper.AGE];
dob = map[DatabaseHelper.DOB];
nextSyncTime = map[DatabaseHelper.NEXT_SYNC_TIME];
productSubType = map[DatabaseHelper.PRODUCT_SUB_TYPE];
validTill = map[DatabaseHelper.VALID_TILL];
latestUpdatePkgSeqNo = map[DatabaseHelper.LATEST_UPDATED_PKG_SEQ_NO];
guidedTour = map[DatabaseHelper.GUIDED_TOUR];
}
}
如何从 localdb 检索数据,以便我可以使用该数据进行状态管理。下面是我现在如何检索数据。
Future<List<UserTable>> getAllUserData() async {
final db = await this.database;
final List<Map<String, dynamic>> map =
await db!.rawQuery("SELECT * FROM $TABLE_USER");
List<UserTable> list = map.isNotEmpty?map.map((e) => UserTable.fromMap(e)).toList():[];
return list;
我怎样才能做到这一点?请提出任何解决方法
解决方案
推荐阅读
- laravel - 流明 + 学说:未定义 Auth guard []
- javascript - 带有 Expo-cli 的 Jestjs。Invariant Violation:元素类型无效
- c# - 向 Outlook 消息功能区添加按钮
- sql-server - SSMS 连接 SSIS 失败
- database - 内存数据库和关系数据库 + NoSQL 数据库有什么区别?
- java - Gradle 看不到 Spring 包,但声明了依赖项
- perl - 在运行的 Gtk3 Perl 应用程序中更改 TextView 小部件的字体大小
- spring-data-elasticsearch - 如何在没有索引的情况下使用 spring data elasticsearch 在 Elasticsearch 中存储字节数组字段?
- matlab - 如何在 Matlab 中为多个变量的超定二次系统找到 argmin/最佳拟合/优化
- java - Java 8+ ConcurrentHashMap 锁条带化