Как передать данные виджету во Flutter? - PullRequest
0 голосов
/ 20 февраля 2020

У меня есть json файл, содержащий список названий и номеров песен. Я сделал просмотр списка и использовал onTap и Navigator.pu sh для отправки данных 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»?

Имейте в виду, что я новичок ie, который, возможно, принял трудную задачу, но я как вызовы:)

1 Ответ

0 голосов
/ 20 февраля 2020

Вы пробовали это?

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