如何在 flutter 中显示资产文件夹中文件的名称(不带扩展名)
How do I display name (without extension) of files from assets folders in flutter
我的资产文件夹中有一些音乐文件,我想自动将它们显示在列表中,而不必为文件夹中的每首音乐都写一行。
我认为 ListView.builder
之类的东西可能有用,但我对这一切还很陌生,不太确定如何正确执行它。
由于无法从 Flutter 项目中的 /assets
文件夹中获取音乐文件的名称,我认为您可以尝试以下方法:
- 有一个 json 文件列出文件的所有元数据(名称、艺术家、
/assets
中的路径等)并使用该文件(获取名称、获取文件的路径文件等)。
- 在线存储您的音乐并通过 API 获取它们
- 将您
/assets
中的所有音乐复制到 phone 的目录中,然后从现在开始处理该目录中的文件(例如:调用 this method to get the names of the files). Check out this answer.
如果你要显示的是你描述的图片,而且名字不重要(比如铃声),那么你可以简单地这样做(假设你按1-10的数字命名文件):
import 'package:flutter/material.dart';
void main() {
runApp(MaterialApp(
home: SampleScreen(),
));
}
class SampleScreen extends StatefulWidget {
@override
_SampleScreenState createState() => _SampleScreenState();
}
class _SampleScreenState extends State<SampleScreen> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: ListView.builder(
itemCount: 10,
itemBuilder: (context, index) => _buildMusicItem(index)),
);
}
Widget _buildMusicItem(int index) {
return Container(
height: 40,
margin: EdgeInsets.all(5),
padding: EdgeInsets.only(left: 10),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(20),
border: Border.all(color: Colors.red, width: 2)),
alignment: Alignment.centerLeft,
child: Text('Music ${index + 1}'),
);
}
}
结果:
我的资产文件夹中有一些音乐文件,我想自动将它们显示在列表中,而不必为文件夹中的每首音乐都写一行。
我认为 ListView.builder
之类的东西可能有用,但我对这一切还很陌生,不太确定如何正确执行它。
由于无法从 Flutter 项目中的 /assets
文件夹中获取音乐文件的名称,我认为您可以尝试以下方法:
- 有一个 json 文件列出文件的所有元数据(名称、艺术家、
/assets
中的路径等)并使用该文件(获取名称、获取文件的路径文件等)。 - 在线存储您的音乐并通过 API 获取它们
- 将您
/assets
中的所有音乐复制到 phone 的目录中,然后从现在开始处理该目录中的文件(例如:调用 this method to get the names of the files). Check out this answer.
如果你要显示的是你描述的图片,而且名字不重要(比如铃声),那么你可以简单地这样做(假设你按1-10的数字命名文件):
import 'package:flutter/material.dart';
void main() {
runApp(MaterialApp(
home: SampleScreen(),
));
}
class SampleScreen extends StatefulWidget {
@override
_SampleScreenState createState() => _SampleScreenState();
}
class _SampleScreenState extends State<SampleScreen> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: ListView.builder(
itemCount: 10,
itemBuilder: (context, index) => _buildMusicItem(index)),
);
}
Widget _buildMusicItem(int index) {
return Container(
height: 40,
margin: EdgeInsets.all(5),
padding: EdgeInsets.only(left: 10),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(20),
border: Border.all(color: Colors.red, width: 2)),
alignment: Alignment.centerLeft,
child: Text('Music ${index + 1}'),
);
}
}
结果: