flutter sqflite类json()

发布于 2025-01-21 10:14:11 字数 1216 浏览 0 评论 0原文

我目前正在使用一个应用程序,该应用程序可以在该应用程序中将数据存储在本地设备上。因此,我使用的是SQFlite软件包,但我遇到了一些错误,将我的类数据转换为JSON。 这是我收到的错误消息:

无法从方法返回类型的“集合”的值 “ tojson”是因为它具有'map< string,widget>'的返回类型。 由于这一行:

Map<String, Widget> toJson() => {
            EntryFields.id = id,
            EntryFields.name = name,
            EntryFields.navigation = navigation,
          };

这是我的班级:

import 'package:flutter/material.dart';

const String tableFavs = 'favorites';

class EntryFields {
  static late String id = '_id';
  static late String name = '_name';
  static late String navigation = '_navigation';
}

class Entries {
  final int id;
  final String name;
  final Widget navigation;

  Entries({
    required this.id,
    required this.name,
    required this.navigation,
  });

  Map<String, Widget> toJson() => {
        EntryFields.id = id,
        EntryFields.name = name,
        EntryFields.navigation = navigation,
      };
}

这是我数据库中的剪切:

  Future<Entries> create(Entries entries) async {
    final db = await instance.database;

    final id = await db.insert(tableFavs, entries.toJson());
  }

I am currently working on an app where the user is able to store data on their device locally. Therefor I am using the sqflite package but I am running into some errors converting my Class data into Json.
This is the error message I get:

A value of type 'Set' can't be returned from the method
'toJson' because it has a return type of 'Map<String, Widget>'.
due to this line:

Map<String, Widget> toJson() => {
            EntryFields.id = id,
            EntryFields.name = name,
            EntryFields.navigation = navigation,
          };

This is my class:

import 'package:flutter/material.dart';

const String tableFavs = 'favorites';

class EntryFields {
  static late String id = '_id';
  static late String name = '_name';
  static late String navigation = '_navigation';
}

class Entries {
  final int id;
  final String name;
  final Widget navigation;

  Entries({
    required this.id,
    required this.name,
    required this.navigation,
  });

  Map<String, Widget> toJson() => {
        EntryFields.id = id,
        EntryFields.name = name,
        EntryFields.navigation = navigation,
      };
}

and this is a snipped from my database:

  Future<Entries> create(Entries entries) async {
    final db = await instance.database;

    final id = await db.insert(tableFavs, entries.toJson());
  }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

剪不断理还乱 2025-01-28 10:14:11

您不能将小部件存储在数据库中,它应该是映射&lt; string,string&gt;
尝试将小部件的参数存储为字符串,而不是整个小部件
您可以存储这些类型的双,字符串,int,bool ..

you can't store a widget in the database it should be Map<String, String>
try to store the parameters of the widget as a String, not the whole widget
you can store these types double, string, int, bool..

久夏青 2025-01-28 10:14:11

尝试使用以下代码

class EntryFields {
  static late String id = '_id';
  static late String name = '_name';
  static late String navigation = '_navigation';
}

class Entries {
    const Entries({
        this.id,
        this.name,
        this.navigation,
    });

    final String? id;
    final String? name;
    final String? navigation;

    Map<String, dynamic> toJson() => {
        "_id": id,
        "_name": name,
        "_navigation": navigation,
    };
}

  Future<void> create(Entries entries) async {
    final db = await instance.database;
    final id = await db.insert(tableFavs, entries.toJson());
  }

void main(){
  final entriesFromField = Entries(
    id: EntryFields.id,
    name: EntryFields.name,
    navigation: EntryFields.navigation
  );
  
  create(entriesFromField);
  
}

或更好的方法您可以使用此 json Generator

try using the below code

class EntryFields {
  static late String id = '_id';
  static late String name = '_name';
  static late String navigation = '_navigation';
}

class Entries {
    const Entries({
        this.id,
        this.name,
        this.navigation,
    });

    final String? id;
    final String? name;
    final String? navigation;

    Map<String, dynamic> toJson() => {
        "_id": id,
        "_name": name,
        "_navigation": navigation,
    };
}

  Future<void> create(Entries entries) async {
    final db = await instance.database;
    final id = await db.insert(tableFavs, entries.toJson());
  }

void main(){
  final entriesFromField = Entries(
    id: EntryFields.id,
    name: EntryFields.name,
    navigation: EntryFields.navigation
  );
  
  create(entriesFromField);
  
}

or better you can use this json generator

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文