【问题标题】:How do I pass data to a widget in Flutter?如何将数据传递给 Flutter 中的小部件?
【发布时间】:2020-02-20 17:55:31
【问题描述】:

我有一个包含标题和歌曲编号列表的 json 文件。我制作了一个列表视图并使用 onTap 和 Navigator.push 将 det 数据发送到详细信息页面。将数据显示为文本效果很好,但我想播放本地资产中的歌曲。我使用 audioplayers 包,如果我对歌曲名进行硬编码,它可以工作,但我想将歌曲名传递给 play 函数来播放所选歌曲。我的 det 详细信息页面代码如下所示(有点简化和缩短):

import 'package:flutter/material.dart';
import 'package:audioplayers/audio_cache.dart';

class SongDetail extends StatelessWidget {
  final String title;
  final String songNumber;

  final player = AudioCache();

  SongDetail(this.title, this.songNumber);

  @override
  Widget build(BuildContext context) {
    Widget titleSection = Container(
      decoration: BoxDecoration(
        color: Colors.blueGrey[50],
      ),
      child: Row(
        mainAxisAlignment: MainAxisAlignment.spaceBetween,
        children: <Widget>[
          Padding(
            padding: EdgeInsets.only(left: 20.0),
            child: IconButton(icon: Icon(
                Icons.play_circle_filled,
                size: 40.0),
                onPressed: () { player.play('1.mp3'); },
              ),
          ),

我可以使用 Text(this.title) 和 Text(this.songNumber) 将标题和 songNumber 显示为文本。但是如何将 songNumber 中的数据获取到 onPressed 函数而不是硬编码的 '1.mp3' 中?

请记住,我是一个新手,可能已经完成了一项艰巨的任务,但我喜欢挑战 :)

【问题讨论】:

    标签: flutter audio local assets playback


    【解决方案1】:

    你试过了吗?

    onPressed: () { player.play('$songNumber.mp3'); },
    

    【讨论】:

    • 感谢您的回答。是的,我已经尝试过了。给出错误。
    • 后来我发现我想要歌曲的旋律时,我在项目中添加了 songNumber。不,我尝试将资产文件夹中的歌曲名称更改为与标题相同,并使用player.play('$title.mp3'),一切正常!所以我必须弄清楚项目中的songNumber有什么问题。想我会尝试再次重写整个代码。但是谢谢你们给了我帮助,让我朝着正确的方向前进。而且我知道我必须研究更多的理论......
    猜你喜欢
    • 2021-07-02
    • 1970-01-01
    • 2019-08-29
    • 2022-11-27
    • 2021-10-25
    • 1970-01-01
    • 2020-11-28
    • 1970-01-01
    相关资源
    最近更新 更多