前提・実現したいこと
デバイス内の特定の拡張子ファイルをListView.bulderで描画したい。
発生している問題・エラーメッセージ
1:ext_Storageというパッケージを使用し外部ストレージpathを取得。
2:その後のフォルダ・ファイルのListView.buillderでの描画の流れがわかりません。
下記のエラーはネットに載っていたコードをいじった結果です。
type 'String' is not a subtype of type 'path' see also;
該当のソースコード
Flutter
1import 'package:flutter/material.dart'; 2import 'package:new_gradient_app_bar/new_gradient_app_bar.dart'; 3import 'dart:io'; 4import 'package:ext_storage/ext_storage.dart'; 5import 'package:path_provider/path_provider.dart'; 6 7class Main extends StatelessWidget { 8 9 @override 10 Widget build(BuildContext context) { 11 return MaterialApp( 12 debugShowCheckedModeBanner: false, 13 home: Musiclist(), 14 ); 15 } 16} 17 18class Musiclist extends StatefulWidget { 19 20 @override 21 _MusichomeState createState() => _MusichomeState(); 22} 23 24class _MusichomeState extends State{ 25 26Future<String> _getPath() { 27 return ExtStorage.getExternalStoragePublicDirectory(ExtStorage. 28 DIRECTORY_MUSIC); 29} 30 31@override 32 Widget build(BuildContext context) { 33 return Scaffold( 34 appBar: NewGradientAppBar( 35 gradient: LinearGradient( 36 colors: [Color(0xFF212121), Color(0xFF616161),]), 37 centerTitle: true, 38 title: const Text('MUSIC LIST'), 39 ), 40 body: Center( 41 child: FutureBuilder( 42 future: _getPath(), 43 builder: (BuildContext context, AsyncSnapshot snapshot) { 44 if (!snapshot.hasData) { 45 return Text("取得中"); 46 } 47 if (snapshot.data.length == 0) { 48 return Text("データなし"); 49 } 50 return ListView.builder( 51 itemCount: snapshot.data.length, 52 itemBuilder: (context, index) => _buildListView(snapshot.data[index]), 53 ); 54 }, 55 ), 56 ), 57 ); 58 } 59}
試したこと
下記のURLのサイトを参考に拡張子フィルタを希望の拡張子に選択してもダメでした。
https://www.fluttercampus.com/guide/26/how-to-list-files-folder-from-internal-or-sd-card-storage-in-flutter-app/
directoryやpathについては多少理解はできているつもりですが、FileSystemやLocalFileSystemといった物の理解や実践ができていないので、pathの取得以降のやり方がよくわかりません。
file_picker等は利用したくなく、なるべく外部パッケージに頼らない形でリストを作りたいです。
簡単な具体例のサンプルコードなどおすすめがあれば教えていいただきたいです。
あなたの回答
tips
プレビュー