如何在 flutter 中显示资产文件夹中文件的名称(不带扩展名)

时间:2021-03-10 00:37:56

标签: list flutter dart assets

我的资产文件夹中有一些音乐文件,我想自动将它们显示在列表中,而不必为文件夹中的每一首音乐都写一行。

like this

我认为像 ListView.builder 这样的东西可能有用,但我对这一切都很陌生,不太确定如何正确执行。

1 个答案:

答案 0 :(得分:1)

由于无法从 Flutter 项目中的 /assets 文件夹中获取音乐文件的名称,我认为您可以尝试以下方法:

  • 有一个 json 文件,列出文件的所有元数据(名称、艺术家、/assets 中的路径等)并使用该文件(获取名称、获取文件路径等)。< /li>
  • 在线存储您的音乐并通过 API 获取它们
  • /assets 中的所有音乐复制到手机目录中,然后从现在开始处理该目录中的文件(例如:调用 this method 以获取文件名)。查看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}'),
    );
  }
}

结果:

enter image description here

相关问题