前提・実現したいこと
複数のURLからメタデータを取得し、'タイトル'、'サムネ'、'概要'をまとめたwebサイト一覧を作りたい。
具体的には、ニュースアプリなどの記事一覧のイメージです。
現在、for文を用いてメタデータ取得と格納をURL毎に行いましたが、
メタデータ用のList内に要素が入っていないようで、アプリ上に何も表示されません。
for文がアプリ起動時に機能してないのだと予想していますが、
解決策がわからなかったので教えていただきたいです。
発生している問題・エラーメッセージ
エラーメッセージはありません。
該当のソースコード
Flutter
1 2class articleListPanel extends StatelessWidget { 3 articleListPanel(this._URL); 4 final List<String> _URL; 5 6 @override 7 Widget build(BuildContext context) { 8 ///個別での動作確認用 9 //final watchMetadata = context.watch<MetadataModel>().fetchOgpFrom(_URL[0]); 10 //Metadata _ogp = context.select((MetadataModel _model) => _model.ogp); 11 ///OGP(Metadata)をList化して管理 12 List<Metadata> _OGP = [];//←ここにメタデータまとめたい 13 void setOgp () { 14 for (var i = 0; i < _URL.length; i++) { 15 final watchMetadata = context.watch<MetadataModel>().fetchOgpFrom(_URL[i]); 16 Metadata _ogp = context.select((MetadataModel _model) => _model.ogp); 17 _OGP.add(_ogp); 18 } 19 } 20 21 return ListView.builder( 22 itemCount: _OGP.length, 23 itemBuilder: (context,n){ 24 return Container( 25 height: 150, 26 //color: Colors.green[200], 27 child: Row( 28 mainAxisAlignment: MainAxisAlignment.spaceBetween, 29 crossAxisAlignment: CrossAxisAlignment.start, 30 children: [ 31 Flexible( 32 child: Container( 33 width: double.maxFinite, 34 height: double.maxFinite, 35 margin: const EdgeInsets.all(2), 36 child: Text( 37 _OGP[n].title ?? "No title",style: const TextStyle( 38 fontWeight: FontWeight.bold,fontSize: 24), 39 ),),), 40 ] 41 ), 42 );} 43 ); 44 45 } 46}
Flutter
1Map<String, dynamic> _ogp = { 2 "title": null, 3 "image": null, 4 "description":null, 5}; 6 7class MetadataModel extends ChangeNotifier { 8 Metadata ogp = Metadata.fromJson(_ogp); 9 10 void fetchOgpFrom(String _url) async { 11 final response = await http.get(Uri.parse(_url)); 12 final document = MetadataFetch.responseToDocument(response); 13 ogp = MetadataParser.openGraph(document); 14 notifyListeners(); 15 } 16}
試したこと
メタデータ格納用のList"_OGP"を作成し、for文を用いて取得したメタデータを格納しました。
for文使わず、~.fetchOgpFrom(_URL[0])部の数字手入力した場合は機能します。
補足情報(FW/ツールのバージョンなど)
開発ツールのバージョン情報は以下になります。
Flutter 2.3.0-17.0.pre.225 • channel master • https://github.com/flutter/flutter.git
Tools • Dart 2.14.0 (build 2.14.0-182.0.dev)
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/07/07 14:08
2021/07/24 08:30