Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 对于包含贴图的贴图,SQFLite(颤振)插入失败_Flutter_Dart_Sqflite - Fatal编程技术网

Flutter 对于包含贴图的贴图,SQFLite(颤振)插入失败

Flutter 对于包含贴图的贴图,SQFLite(颤振)插入失败,flutter,dart,sqflite,Flutter,Dart,Sqflite,有人能确认SQFLite是否支持包含映射的映射吗?我确实在这个网站上看到了下面的帖子,也许这就是答案 在我的情况下,我有两个模型类,我正在工作 房子 狗 House包括一个名为pets的字段,它是一个列表 我在每个类中都有一个构造函数和工厂方法,负责根据需要将映射/对象转换为映射/对象,以便发送到SQFLite并从中检索信息 模型类 狗 类狗{ 最终int id; 最后的线品种; 最后的字符串名; 最终积分; 狗({this.id,this.breed,this.name,this.age

有人能确认SQFLite是否支持包含映射的映射吗?我确实在这个网站上看到了下面的帖子,也许这就是答案

在我的情况下,我有两个模型类,我正在工作

  • 房子
House包括一个名为pets的字段,它是一个列表

我在每个类中都有一个构造函数和工厂方法,负责根据需要将映射/对象转换为映射/对象,以便发送到SQFLite并从中检索信息

模型类 狗

类狗{
最终int id;
最后的线品种;
最后的字符串名;
最终积分;
狗({this.id,this.breed,this.name,this.age});
//将行插入数据库时使用,包括id字段
映射toMap(){
最终映射=映射();
map['id']=id;
地图['bride']=品种;
映射['name']=名称;
地图['age']=年龄;
返回图;
}
//从数据库返回行并转换为对象时使用
工厂狗。从地图(地图数据)=>狗(
id:data['id'],
品种:数据[“品种”],
名称:数据['name'],
年龄:数据[‘年龄’]
);
}
房子

导入“dog.dart”;
班房{
最终int id;
最后的字符串名;
最终字符串颜色;
最终宠物名单;
House({this.id,this.name,this.color,this.pets});
//将行插入数据库时将使用
映射toMap(){
最终映射=映射();
map['id']=id;
映射['name']=名称;
地图['color']=颜色;
如果(this.pets!=null){
map['pets']=this.pets.map((pet)=>pet.toMap()).toList();
}
返回图;
}
//从数据库返回行并转换为对象时使用
factory House.fromMap(地图数据){
返回屋(
id:data['id'],
名称:数据['name'],
颜色:数据['color'],
宠物:数据['pets']!=null
?(数据['pets']作为列表).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;
  }
Future addNewHome(House-House)异步{
//尝试将房屋添加到DB
var client=await database.db;
int result=wait client.insert(homeschema.tblHomes,house.toMap(),conflictAlgorithm:conflictAlgorithm.replace);
_加上(房子);
返回结果;
}
当我尝试执行插入时,我得到以下错误

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): 
E/flatter(586):[ERROR:flatter/lib/ui/ui\u dart\u state.cc(157)]未处理的异常:数据库异常(java.util.HashMap不能转换为java.lang.Integer)sql“插入或替换到家庭(id、名称、颜色、宠物)值(?,,?)”args[1,Smith,Green,[{姓名:Mackie,id:1,品种:Rotweiler,年龄:8},{姓名:坦纳,身份证:2,品种:獒,年龄:8}]}
E/flatter(586):#0 wrapDatabaseException(包:sqflite/src/exception_impl.dart:12:7)
E/颤振(586):
E/颤振(586):#1 SqfliteDatabaseFactoryImpl.wrapDatabaseException(包:sqflite/src/factory\u impl.dart:25:7)
E/flatter(586):#2 SqfliteDatabaseMixin.safeInvokeMethod(包:sqflite/src/database_mixin.dart:188:15)
E/颤振(586):#3 sqflitedDatabaseMixin.txnRawInsert。(软件包:sqflite/src/database_mixin.dart:363:14)
E/颤振(586):#4 SqfliteDatabaseMixin.txn同步。(软件包:sqflite/src/database_mixin.dart:307:22)
E/flatter(586):#5 BasicLock.synchronized(包:synchronized/src/basic_lock.dart:32:26)
E/颤振(586):#6 SqfliteDatabaseMixin.txn已同步(包:sqflite/src/database_mixin.dart:303:43)
E/flatter(586):#7 SqfliteDatabaseMixin.txnWriteSynchronized(包:sqflite/src/database_mixin.dart:325:7)
E/颤振(586):#8 SqfliteDatabaseMixin.txnRawInsert(包装:sqflite/src/database_mixin.dart:362:12)
E/flatter(586):#9 SqfliteDatabaseExecutorMixin.rawsert(包:sqflite/src/database_mixin.dart:49:15)
E/flatter(586):#10 SqfliteDatabaseExecutorMixin.insert(包:sqflite/src/database_mixin.dart:59:12)
E/flatter(586):#11 Homes.addNewHome(包:search_list_view/providers/Homes.dart:19:31)
E/颤振(586):
E/颤振(586):#12 _MyAppState.build。(软件包:搜索列表视图/main.dart:95:26)
E/颤振(586):#13InkResponseEstate.handleTap(包装:颤振/src/材料/墨水井。省道:706:14)
E/颤振(586):#14#。(包装:颤振/src/材料/墨水井。省道:789:36)
E/flatter(586):#15 GestureRecognizer.invokeCallback(包:flatter/src/signatures/recognizer.dart:182:24)
E/flatter(586):#16 TapGestureRecognitor.handleTapUp(包:flatter/src/signatures/tap.dart:486:11)
E/flatter(586):#17 BaseTapgestureRecognitor.#检查(软件包:flatter/src/signatures/tap.dart:264:5)
E/flatter(586):#18 BaseTapgestureRecognitor.handlePrimaryPointer(包:flatter/src/signatures/tap.dart:199:7)
E/颤振(586):#19 PrimaryPointerGestureRecognizer.handleEvent(包:颤振/src/signatures/recognizer.dart:467:9)
E/flatter(586):#20点路由器。#调度(包:flatter/src/signatures/pointer#u路由器。dart:76:12)
E/颤振(586):#21点外部。#调度事件路线。(包装:颤振/src/signatures/pointer_router.省道:117:9)
E/flatter(586):#22 LinkedHashMapMixin.forEach(dart:collection patch/compact_hash.dart:379:8)
E/flatter(586):#23点路由器。#调度事件路由(包:flatter/src/signatures/pointer#路由器。dart:115:18)
E/flatter(586):#24 PointerRouter.route(包:flatter/src/signatures/pointer_router.dart:101:7)
E/flatter(586):#25 GestureBinding.handleEvent(包装:flatter/src/signatures/binding.dart:218:19)
E/flatter(586):#26 GestureBinding.dispatchEvent(包:flatter/src/signatures/binding.dart:198:22)
电子/颤振(586):#27手势绑定。#手持指针事件(包装:颤振/src/手势/绑定。省道:156:7)
E/flatter(586):#28手势绑定。(u flushPointerEventQueue(包:flatter/src/signatures/binding.d
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): 
   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;
}