- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有人可以确认SQFLite是否支持包含 map 的 map ?我确实在此站点上遇到了以下帖子,可能是答案?
Flutter sqflite insert List<String>
在我的情况下,我有两个正在使用的模型类。
class Dog {
final int id;
final String breed;
final String name;
final int age;
Dog({this.id, this.breed, this.name, this.age});
// Used when inserting a row into the db, including the id field
Map<String, dynamic> toMap() {
final map = Map<String, dynamic>();
map['id'] = id;
map['breed'] = breed;
map['name'] = name;
map['age'] = age;
return map;
}
// Used when returning a row from the DB and converting into an object
factory Dog.fromMap(Map<String, dynamic> data) => Dog(
id: data['id'],
breed: data['breed'],
name: data['name'],
age: data['age']
);
}
import 'dog.dart';
class House{
final int id;
final String name;
final String color;
final List<Dog> pets;
House({this.id, this.name, this.color, this.pets});
// Will be used when inserting a row into the database
Map<String, dynamic> toMap() {
final map = Map<String, dynamic>();
map['id'] = id;
map['name'] = name;
map['color'] = color;
if (this.pets != null) {
map['pets'] = this.pets.map((pet) => pet.toMap()).toList();
}
return map;
}
// Used when returning a row from the DB and converting into an object
factory House.fromMap(Map<String, dynamic> data) {
return House(
id: data['id'],
name: data['name'],
color: data['color'],
pets: data['pets'] != null
? (data['pets'] as List).map((pet) => Dog.fromMap(pet)).toList()
: null,
);
}
}
Future<int> addNewHome(House house) async {
// Attempt to add the house to the DB
var client = await database.db;
int result = await client.insert(HomesSchema.tblHomes, house.toMap(), conflictAlgorithm: ConflictAlgorithm.replace);
_homes.add(house);
return result;
}
E/flutter ( 586): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: DatabaseException(java.util.HashMap cannot be cast to java.lang.Integer) sql 'INSERT OR REPLACE INTO homes (id, name, color, pets) VALUES (?, ?, ?, ?)' args [1, Smith, Green, [{name: Mackie, id: 1, breed: Rottweiler, age: 8}, {name: Tanner, id: 2, breed: Mastiff, age: 8}]]}
E/flutter ( 586): #0 wrapDatabaseException (package:sqflite/src/exception_impl.dart:12:7)
E/flutter ( 586): <asynchronous suspension>
E/flutter ( 586): #1 SqfliteDatabaseFactoryImpl.wrapDatabaseException (package:sqflite/src/factory_impl.dart:25:7)
E/flutter ( 586): #2 SqfliteDatabaseMixin.safeInvokeMethod (package:sqflite/src/database_mixin.dart:188:15)
E/flutter ( 586): #3 SqfliteDatabaseMixin.txnRawInsert.<anonymous closure> (package:sqflite/src/database_mixin.dart:363:14)
E/flutter ( 586): #4 SqfliteDatabaseMixin.txnSynchronized.<anonymous closure> (package:sqflite/src/database_mixin.dart:307:22)
E/flutter ( 586): #5 BasicLock.synchronized (package:synchronized/src/basic_lock.dart:32:26)
E/flutter ( 586): #6 SqfliteDatabaseMixin.txnSynchronized (package:sqflite/src/database_mixin.dart:303:43)
E/flutter ( 586): #7 SqfliteDatabaseMixin.txnWriteSynchronized (package:sqflite/src/database_mixin.dart:325:7)
E/flutter ( 586): #8 SqfliteDatabaseMixin.txnRawInsert (package:sqflite/src/database_mixin.dart:362:12)
E/flutter ( 586): #9 SqfliteDatabaseExecutorMixin.rawInsert (package:sqflite/src/database_mixin.dart:49:15)
E/flutter ( 586): #10 SqfliteDatabaseExecutorMixin.insert (package:sqflite/src/database_mixin.dart:59:12)
E/flutter ( 586): #11 Homes.addNewHome (package:search_list_view/providers/homes.dart:19:31)
E/flutter ( 586): <asynchronous suspension>
E/flutter ( 586): #12 _MyAppState.build.<anonymous closure> (package:search_list_view/main.dart:95:26)
E/flutter ( 586): #13 _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:706:14)
E/flutter ( 586): #14 _InkResponseState.build.<anonymous closure> (package:flutter/src/material/ink_well.dart:789:36)
E/flutter ( 586): #15 GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:182:24)
E/flutter ( 586): #16 TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:486:11)
E/flutter ( 586): #17 BaseTapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:264:5)
E/flutter ( 586): #18 BaseTapGestureRecognizer.handlePrimaryPointer (package:flutter/src/gestures/tap.dart:199:7)
E/flutter ( 586): #19 PrimaryPointerGestureRecognizer.handleEvent (package:flutter/src/gestures/recognizer.dart:467:9)
E/flutter ( 586): #20 PointerRouter._dispatch (package:flutter/src/gestures/pointer_router.dart:76:12)
E/flutter ( 586): #21 PointerRouter._dispatchEventToRoutes.<anonymous closure> (package:flutter/src/gestures/pointer_router.dart:117:9)
E/flutter ( 586): #22 _LinkedHashMapMixin.forEach (dart:collection-patch/compact_hash.dart:379:8)
E/flutter ( 586): #23 PointerRouter._dispatchEventToRoutes (package:flutter/src/gestures/pointer_router.dart:115:18)
E/flutter ( 586): #24 PointerRouter.route (package:flutter/src/gestures/pointer_router.dart:101:7)
E/flutter ( 586): #25 GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:218:19)
E/flutter ( 586): #26 GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:198:22)
E/flutter ( 586): #27 GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:156:7)
E/flutter ( 586): #28 GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:102:7)
E/flutter ( 586): #29 GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:86:7)
E/flutter ( 586): #30 _rootRunUnary (dart:async/zone.dart:1138:13)
E/flutter ( 586): #31 _CustomZone.runUnary (dart:async/zone.dart:1031:19)
E/flutter ( 586): #32 _CustomZone.runUnaryGuarded (dart:async/zone.dart:933:7)
E/flutter ( 586): #33 _invoke1 (dart:ui/hooks.dart:273:10)
E/flutter ( 586): #34 _dispatchPointerDataPacket (dart:ui/hooks.dart:182:5)
E/flutter ( 586):
最佳答案
为了在SQLite数据库中存储任何类型的值,您只需将对象序列化为JSON字符串,然后反序列化该对象即可。
假设您有一个名为Menu的类。 (我在这里使用可序列化的JSON)
class Menu {
@JsonKey(name: "status")
String status;
@JsonKey(name: "data")
MenuListData menuListData;
Menu(this.status, this.menuListData);
factory Menu.fromJson(Map<String,dynamic>
json)=>_$MenuFromJson(json);
Map<String, dynamic> toJson() => _$MenuToJson(this);
}
Menue menuList =
await getIt<LiveMenuRepository>().getMenuResponse(menuPost);
//decode the response to String format
String menuResponseString = jsonEncode(menuList);
//convert the string to Map of <String,dynamic> format
Map<String, dynamic> menuResponseMap = {"menu": menuResponseString};
//store this Map response in to local database
int menuStored = await getIt<LocalMenuRepository>().insertMenuResponseData(menuResponseMap);
Future<int> insertMenuResponseData(Map<String,dynamic> menuResponse) async {
final db = await dbProvider.database;
var result = db.insert(menuTable, menuResponse);
return result;
}
final Map<String, dynamic> menuList = await getIt<LocalMenuRepository>().getMenuResponseString();
// if(menuList!=null) {
menuList.forEach((key, value) {
if (key == "menu") {
storedMenu = value ;
}
});
//decode the string back to Map Object
final dynamic menuMap = jsonDecode(storedMenu);
//getting the Menu object using fromJson method
final Menu menuListNameResponse = Menu
.fromJson(menuMap as Map<String,dynamic>);
Future<Map<String,dynamic>> getMenuResponse() async {
final db = await dbProvider.database;
List<Map<String, dynamic>> result;
result = await db.rawQuery('SELECT * FROM $menuTable');
// print(result[0]);
if (result.length > 0) {
return result[0];
}
return null;
}
关于flutter - 对于包含 map 的 map ,SQFLite( flutter )插入失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60501415/
我有一个 sqflite 数据库,其中设置了一个表,其中所有列都放在一边,形成了唯一的键,设置为 BLOB 数据类型。目的是存储为二进制数据。我对 Dart 和 flutter 非常陌生,所以我让事情
我得到了sqflite函数Future>返回的getSentences(句子是具有int id和String句子的类)。现在我要在我的主窗口小部件树中列出该列表。因此,我创建了此功能: Future
我只是想将用户保存到我的数据库中。以下是我的用户模型类 class User { int _id; String _userId; String _mobileNumber; User
我正在尝试从我的 SQFlite 数据库中读取下拉列表的列表部分,但不知道如何读取。 来自 database_helper 的查询 Future> getFieldData(String animal
我试图通过创建一个简单的 CLI 来测试 SQFlite API。我可以使用 Android Studio 和 VS Code 从同一目录运行默认示例应用程序,我也可以运行其他简单的 CLI 程序。以
我正在将 sqflite 用于我的 flutter 项目,现在,我想备份然后恢复它。我搜索了这个问题,但找不到结果。有什么办法吗? 谢谢。 最佳答案 依赖关系 dependencies: encr
我有以下rawQuery final maps = await db.rawQuery(""" select r.id, r.name, r.description,r.created_by, a.i
我想使用 sqflite package存储我的对象。我读了一些articles , tutorials和 examples关于它。至此我明白了一切。但它们都没有涵盖我的用例: 我有一个名为 Foo
我有两个相关的表,在我的模式中声明了一个外键: CREATE TABLE Collection( id INTEGER PRIMARY KEY, name TEXT, star
我正在创建一个应用程序并需要一个数据库。该数据库包含位置表和兴趣点表。这是一对多的关系。 一个位置有几个兴趣点。 现在我试图用 sqflite 来做这种关系,但失败了。 我已经尝试添加外键,但它不起作
我有以下查询,它从员工表中选择,其中名称为“max”,ID 不在 123 和 444 中。不在ID中可以在未来增长。但我收到错误为 错误 (8023):[错误:flutter/lib/ui/ui_da
我正在尝试在 android 中创建 Sqflite 数据库,并在创建时插入一些记录。我不想有 asset_db,因为我必须在一张表中只插入 5-6 条记录。 我试着做这样的事情 initDataba
我将所有 API 数据存储到缓存中。一些 API 有超过 10000 个数据。 postman 响应时间在一秒内。但在应用程序中导航到下一页非常慢。我使用了这段代码: onPressed: (
如何在sqflite中快速插入多条记录?标准的快速方法是: await database.insert(table, object.toMap()) 但是我不认为用循环一对一插入记录是个好主意。或者我
我已经阅读了许多关于如何在 Flutter 中实现 Sqflite 的教程和示例。其他所有示例都是仅使用一个模型或数据库表完成的。如这些教程中所定义: https://pub.dartlang.org
如何使用 flutter 和 sqflite 从 Assets 中打开现有数据库?我阅读了本指南: https://github.com/tekartik/sqflite/blob/master/do
我正在使用使用 SQLite 数据库的 flutter 构建和应用程序。我使用这段代码创建了第一个表: void _createDb(Database db, int newVersion) asy
我使用 flutter sqflite 创建了一个本地数据库。当我在该列表中添加或删除某些内容时,我想听取该数据库上任务列表的长度并更新任务总数。但是当我调用 provider.of(context)
以下仅发生在刚刚在代码中创建的数据库中。以前存在的数据库工作正常。 我有数据库助手的常用单例设置,相关部分是: Future get database async { // ... db ??
我的应用中有两个模型,分别命名为 Basket 和 Items。模型篮包含项目列表。所以如下: 篮子: int id string name string imageUrl List items 项目
我是一名优秀的程序员,十分优秀!