前提・実現したいこと
jsonのデータを読み取る練習をしております。
今回は、一つ目のリストに<猫><コアラ>。
二つ目のリストに<たぬき><犬>というタグが表示されるようにしたいと考えています。
発生している問題・エラーメッセージ
List dynamic is not a subtype of type 'String'
記述
test.jsonでの記述です。
[ { "hoge": ["猫","コアラ"], "people": "田中" }, { "hoge": ["たぬき","犬"], "people": "斎藤" } ]
favorite_page.dartでの記述です。runApp(MyApp());とかの記述は、main.dartにしました
flutter
1import 'dart:convert'; 2import 'package:flutter/cupertino.dart'; 3import 'package:flutter/material.dart'; 4import 'package:flutter_tags/flutter_tags.dart'; 5import 'package:flutter/services.dart' show rootBundle; 6 7class FavoritePage extends StatefulWidget { 8 @override 9 _FavoritePageState createState() => _FavoritePageState(); 10} 11 12class _FavoritePageState extends State<FavoritePage> { 13 14 List<dynamic> testJsonList = []; 15 16 @override 17 void initState() { 18 loadJsonAsset(); 19 super.initState(); 20 } 21 22 Future<void> loadJsonAsset() async { 23 String loadData = await rootBundle.loadString('assets/jsons/test.json'); 24 testJsonList = jsonDecode(loadData); 25 26 if(mounted) { 27 setState(() => testJsonList = jsonDecode(loadData)); 28 } 29 } 30 31 @override 32 Widget build(BuildContext context) { 33 return Scaffold( 34 body: ListView.builder( 35 itemBuilder: (BuildContext context, int index) { 36 return Container( 37 decoration: BoxDecoration( 38 border: Border( 39 bottom: BorderSide(color: Colors.black38), 40 ), 41 ), 42 child: ListTile( 43 title: Tags( 44 itemCount: testJsonList.length, 45 itemBuilder: (int index){ 46 return ItemTags( 47 index: index, 48 title:testJsonList[index]['hoge'], 49 ); 50 }, 51 ), 52 )); 53 }, itemCount: testJsonList.length, 54 ), 55 ); 56 } 57} 58
試したこと
test.jsonからデータを読み取れているか確認するために、
flutter
1 title:Text(testJsonList[0]['people'])
と記述してみたところ、"田中"と出てきたので、読み取り自体に問題はなさそうです。
title:testJsonList[index]['hoge[index]']とかもやってみましたが、全然違うようでした…
おそらく、型で何らかのミスをしているんだなと考えています。
分かる方、ご回答よろしくお願いします(^^)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/07 11:29