実現したいこと
flutterでアプリ立ち上げ時csvファイルを取得して、
ListViewで表示したい
概要
flutterで非同期通信をしてデータを取得して、ウェジットに反映させたいのですが、
「初期化していない!」というメッセージが出てしまします。
解決策を調べてみたのですが、どれもいまいちうまくいかなかったので質問いたします
発生している問題・エラーメッセージ
dart
1 2//load_csv.dart 3 4import 'package:flutter/services.dart'; 5 6Future<List> getTitleCsvData(String path) async { 7 8 String csv = await rootBundle.loadString(path); 9 String titledata = csv.split("\n")[0]; 10 11 List titleList = titledata.split(','); 12 13 return titleList; 14 15} 16
dart
1 2//title_app.dart 3 4import 'package:flutter/material.dart'; 5import 'package:selectquiz/load_csv.dart'; 6 7 8class QuizApp extends StatelessWidget { 9 QuizApp({Key? key}) : super(key: key); 10 //この変数でのエラー 11 late List titleList; 12 13 //ここで、上記のload_csvのメソッドを使っている 14 void getTitle() async{ 15 titleList=await(getTitleCsvData('assets/titledata.csv')); 16 } 17 18//ここで最初に実行したい 19 20 void initState() { 21 getTitle(); 22 } 23 24 25 26 Widget build (BuildContext context) { 27 28 return Scaffold( 29 body: ListView.builder( 30 itemCount: titleList.length, 31 itemBuilder: (context,index){ 32 return ListTile( 33 title: Text(titleList[index]), 34 onTap: (){ 35 //goToQuizApp(context); //クイズアプリへ遷移するQuizApp関数がよばれる} 36 }, 37 ); 38 }, 39 ) 40 ); 41 } 42} 43 44
csv
1 2//assets/titledata.csv 3 4title1,title2,title3,title4,title5,title6,title7 5
試したこと
Widgetの生成を遅らせるとよいと思いますが、調べて実行しても同様なエラーがでてしまいます。
コードはすべて同階層
csvはassetsに入れており、pabspec.yamlにも記入済みです
ご教授のほうをよろしくお願いにいれいたします
回答2件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。