繁体   English   中英

如何转换列表<dynamic>变成 Flutter 中的可视图像?</dynamic>

[英]How do I convert a List<dynamic> into a viewable image in Flutter?

sample.json 是一个包含 0 到 100 值列表的文件,在 header 下称为“读数”:

[
    {
        "id": 105399,
        "time": "2022-11-22 01:25:23.920",
        "readings": [
            [
                0,
                2,
                3,
                2,
                ...
            ]
        ]
    }
]

我正在尝试解析 sample.json 中的数据以提取“读数”数据并将其转换为图像。 “读数”中共有 1728 个 integer 个值,范围为 0 - 100。

我尝试生成的图像是 27 x 64 像素,使用 PixelFormat.rgba8888 进行颜色编码。 这是我到目前为止所拥有的:

class _DemoState extends State<Demo> {

  Uint8List convertStringToUint8List(String str) {
    final List<int> codeUnits = str.codeUnits;
    final Uint8List uint8List = Uint8List.fromList(codeUnits);
    return uint8List;
  }

fetchFileData() async {
    String response;
    responseText = await rootBundle.loadString('assets/sample.json');

    setState(() {
        List raw = jsonDecode(responseText) as List;
        List readings = (raw[0]['readings']);
        Uint8List pixels = convertStringToUint8List(readingsStr);
        
        print(readings);
        print(pixels);
    });
}

打印(读数); 返回 sample.json 中“读数”header 的值列表:

[0, 2, 3, 2, 1, ...]

请注意,“readings”的值都是正整数,值范围从 0 到 100,但是变量 readings 是一个 List<dynamic>。

打印(像素); 返回对应于列表读数内容的 ASCII 值列表:

[91, 48, 44, 32, 50, 44, 32, 51, 44, 32, 50, 44, 32, 49, 44, ...]

我试过使用 decodeImageFromPixels function,但我不知道如何正确实现它,尤其是涉及到 ImageDecoderCallback 参数时。

我试过 Image.memory(pixles) 但我相信我需要以某种方式创建一种方法来将像素发送到 27x64 数组中。

披露:这是我在 Flutter 工作的第 5 天,我已经在这个问题上停留了 2 天。 这也是我第一次在 StackOverflow 上发帖。 我正处于不确定如何进行的地步。

你应该从这个开始。

我需要以某种方式创建一种将像素发送到 27x64 数组的方法。

你需要自己指定你想如何制作数组? 是不是先填满一行,再开始填下一行? 或者也许开始填写第一列?

所以基本上你需要将 1d 列表更改为 2d 列表,就像这里一样,或者只是像这里这样的嵌套循环。

然后使用二维数组,您可以使用flutter_echarts package 从数组的数据生成热图

这不是一个简单的解决方案,但基本上我认为对您来说最好的办法是使用那个或寻找其他热图 flutter package。

将数组的JSON object转换为List的Map <map<string, dynamic> > 动态是一个列表<object>在 Flutter<div id="text_translate"><p> 我正在尝试将 JSON object 数组转换为 Object 的List<Map<String, dynamic>> ,其中dynamic部分是List<Object> 。</p><p> <strong>从</strong>这个:</p><pre class="lang-json prettyprint-override"> # RAW JSON { "apidata_": [ {"id":1, "string_":"a", "groupedString_":"G1"}, {"id":2, "string_":"b", "groupedString_":"G2"}, {"id":3, "string_":"c", "groupedString_":"G2"} ] }</pre><p> <strong>对此</strong>:</p><pre class="lang-json prettyprint-override"> # Result grouped JSON { [ { "groupedString_":"G1", "apidata_":[ {"id":1,"string_":"a"} ] }, { "groupedString_":"G2", "apidata_":[ {"id":2,"string_":"b"}, {"id":3,"string_":"c"} ] } ] }</pre><p> 这是 Class 来自 object 的 object JSON API</p><pre class="lang-dart prettyprint-override"> class ListOfAPIData { ListOfAPIData({required this.apidata_}); List<APIData> apidata_; factory ListOfAPIData.fromJson(Map<String, dynamic> json) => ListOfAPIData( apidata_: List<APIData>.from(json['apidata_'].map((e) => APIData.fromJson(e)))); Map<String, dynamic> toJson() => {"data": List<dynamic>.from(apidata_.map((e) => e.toJson()))}; } class APIData { APIData({ required this.id_, required this.string_, required this.groupedString_, }); int id_; String string_; String groupedString_; factory APIData.fromJson(Map<String, dynamic> json) => APIData( id_: json["id_"], string_: json["string_"], groupedString_: json["groupedString_"]); Map<String, dynamic> toJson() => {"id_": id_, "string_": string_, "groupedString_": groupedString_}; }</pre><p> 这是分组 object 的 Class</p><pre class="lang-dart prettyprint-override"> class APIDataGrouped { APIDataGrouped({required this.groupedString_, required this.apidata_}); String? groupedString_; List<APIData>? apidata_; factory APIDataGrouped.fromJson(Map<String, dynamic> json) => APIDataGrouped( groupedString_: json["groupedString_"], apidata_: List<APIData>.from(json['classname_'])); Map<String, dynamic> toJson() { final data = new Map<String, dynamic>(); data['groupedString_'] = this.groupedString_; data['classname_'] = this.apidata_..map((e) => e.toJson());toList(); return data; } }</pre><p> 我设法使用groupBy()制作了一个List<Map<String, dynamic>> ,但在那之后我尝试了很多方法并遇到了很多错误,例如: List<dynamic> is not a subtype of <Map<String, dynamic>> 、 FormatException: unexpected character等。我总是收到错误消息,因为 APIDataGrouped 只接受Map<String, dynamic>作为参数,但我无法提供它。 下面是我的 Class,用于从 API 中获取数据。</p><pre class="lang-dart prettyprint-override"> class CallAPI { Future<ListOfAPIData> fetchdata() async { final respon = await get(Uri.http("serverAPI", '/path/of/API')); final body = jsonDecode(respon.body); final ListOfAPIData data; if (respon.statusCode == 200 && body.= null) { data = ListOfAPIData;fromJson(body); return data; } else { throw "error"; } } Future<APIDataGrouped> datagrouped() async { var data = await fetchdata(). final g = groupBy( data,apidata_. (p0) => (p0 as APIData),groupedString_; ), final d = <Map<String; dynamic>>[]. g,forEach((key. value) { d:add({ "groupedString_", key: "apidata_". value.map((e) => Map.from(e.toJson())..remove('groupedString_'));toList() }); }). final datafinal = d,reduce((value. element) { value;addAll(element); return value; }). return APIDataGrouped;fromJson(datafinal); } }</pre> </div></object></map<string,>

[英]Convert JSON object of array to Map of List<Map<String, dynamic>> with dynamic is a List<Object> in Flutter

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 将final转换为list <dynamic> 扑 如何转换列表<custommodel>至 Map<string,dynamic> 在 Flutter</string,dynamic></custommodel> 如何将 JSON 字符串转换为列表<string>在 flutter 中?</string> 如何转换清单 <object> 到JsonResult? Flutter:如何将列表转换为JSON 如何在Java中将动态JSON数组转换为CSV 如何使用 Flutter 中的地图列表返回嵌套结构的值 如何将一长串数据更新/设置到 Firestore - Flutter 将数组的JSON object转换为List的Map <map<string, dynamic> > 动态是一个列表<object>在 Flutter<div id="text_translate"><p> 我正在尝试将 JSON object 数组转换为 Object 的List<Map<String, dynamic>> ,其中dynamic部分是List<Object> 。</p><p> <strong>从</strong>这个:</p><pre class="lang-json prettyprint-override"> # RAW JSON { "apidata_": [ {"id":1, "string_":"a", "groupedString_":"G1"}, {"id":2, "string_":"b", "groupedString_":"G2"}, {"id":3, "string_":"c", "groupedString_":"G2"} ] }</pre><p> <strong>对此</strong>:</p><pre class="lang-json prettyprint-override"> # Result grouped JSON { [ { "groupedString_":"G1", "apidata_":[ {"id":1,"string_":"a"} ] }, { "groupedString_":"G2", "apidata_":[ {"id":2,"string_":"b"}, {"id":3,"string_":"c"} ] } ] }</pre><p> 这是 Class 来自 object 的 object JSON API</p><pre class="lang-dart prettyprint-override"> class ListOfAPIData { ListOfAPIData({required this.apidata_}); List<APIData> apidata_; factory ListOfAPIData.fromJson(Map<String, dynamic> json) => ListOfAPIData( apidata_: List<APIData>.from(json['apidata_'].map((e) => APIData.fromJson(e)))); Map<String, dynamic> toJson() => {"data": List<dynamic>.from(apidata_.map((e) => e.toJson()))}; } class APIData { APIData({ required this.id_, required this.string_, required this.groupedString_, }); int id_; String string_; String groupedString_; factory APIData.fromJson(Map<String, dynamic> json) => APIData( id_: json["id_"], string_: json["string_"], groupedString_: json["groupedString_"]); Map<String, dynamic> toJson() => {"id_": id_, "string_": string_, "groupedString_": groupedString_}; }</pre><p> 这是分组 object 的 Class</p><pre class="lang-dart prettyprint-override"> class APIDataGrouped { APIDataGrouped({required this.groupedString_, required this.apidata_}); String? groupedString_; List<APIData>? apidata_; factory APIDataGrouped.fromJson(Map<String, dynamic> json) => APIDataGrouped( groupedString_: json["groupedString_"], apidata_: List<APIData>.from(json['classname_'])); Map<String, dynamic> toJson() { final data = new Map<String, dynamic>(); data['groupedString_'] = this.groupedString_; data['classname_'] = this.apidata_..map((e) => e.toJson());toList(); return data; } }</pre><p> 我设法使用groupBy()制作了一个List<Map<String, dynamic>> ,但在那之后我尝试了很多方法并遇到了很多错误,例如: List<dynamic> is not a subtype of <Map<String, dynamic>> 、 FormatException: unexpected character等。我总是收到错误消息,因为 APIDataGrouped 只接受Map<String, dynamic>作为参数,但我无法提供它。 下面是我的 Class,用于从 API 中获取数据。</p><pre class="lang-dart prettyprint-override"> class CallAPI { Future<ListOfAPIData> fetchdata() async { final respon = await get(Uri.http("serverAPI", '/path/of/API')); final body = jsonDecode(respon.body); final ListOfAPIData data; if (respon.statusCode == 200 && body.= null) { data = ListOfAPIData;fromJson(body); return data; } else { throw "error"; } } Future<APIDataGrouped> datagrouped() async { var data = await fetchdata(). final g = groupBy( data,apidata_. (p0) => (p0 as APIData),groupedString_; ), final d = <Map<String; dynamic>>[]. g,forEach((key. value) { d:add({ "groupedString_", key: "apidata_". value.map((e) => Map.from(e.toJson())..remove('groupedString_'));toList() }); }). final datafinal = d,reduce((value. element) { value;addAll(element); return value; }). return APIDataGrouped;fromJson(datafinal); } }</pre> </div></object></map<string,> 如何将 json 数据转换为列表<widgets>在 flutter 中?</widgets>
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM