Flutter / Dart - Как я могу воспроизводить звуки из списка, используя onPressed с flatButton в пакете flutter_Swiper? - PullRequest
0 голосов
/ 01 марта 2020

G'day Stackoverflowers!

Я начал изучать Flutter / Dart для личного проекта и столкнулся с проблемой, которую не могу решить. Я был бы очень признателен за помощь, пожалуйста.

Я создаю приложение для изучения английского языка sh (я учитель и автор английского языка на английском языке) и одну из страниц приложения. Здесь вы можете увидеть фотографии различных продуктов питания и напитков с их написанным названием и возможностью прослушать произношение пищи или напитка. здесь приведен фрагмент кода:

Swiper(
        itemWidth: MediaQuery.of(context).size.width,
        itemHeight: MediaQuery.of(context).size.height,
        layout: SwiperLayout.TINDER,
        itemCount: 43,
        indicatorLayout: PageIndicatorLayout.WARM,
        itemBuilder: (BuildContext context, int index,) {
          return Card(
            elevation: 5.0,
            child: Column(
              children: <Widget>[
                FlatButton(
                  onPressed: () => {
                    foodSounds[index],
                  },
                  child: Row(
                    children: <Widget>[
                      SizedBox(
                        width: 70.0,
                      ),
                      Icon(Icons.volume_up),
                      SizedBox(
                        width: 30.0,
                      ),
                      Text(foodNouns[index],
                          textAlign: TextAlign.center,
                          style: TextStyle(
                            fontSize: 20,
                            fontWeight: FontWeight.w500,
                          )),
                    ],
                  ),
                ),
                Image.asset(foodPictures[index], fit: BoxFit.contain),
              ],
            ),
          );

Как вы, наверное, догадались, у меня нет проблем с отображением нужных картинок и их соответствующих существительных с использованием списка и индекса этого списка. Вот списки, которые у меня есть для картинок и существительных

final List foodPictures = [
'images/foodnouns/apple.jpg',
'images/foodnouns/banana.jpg',
'images/foodnouns/bar.jpg',
'images/foodnouns/beer.jpg',
'images/foodnouns/biscuits.jpg',
'images/foodnouns/bread.jpg',
'images/foodnouns/breakfast.jpg',
'images/foodnouns/butter.jpg',
'images/foodnouns/cafe.jpg',
'images/foodnouns/cake.jpg',
'images/foodnouns/cheese.jpg',
'images/foodnouns/chocolate.jpg',
'images/foodnouns/coffee.jpg',
'images/foodnouns/cup.jpg',
'images/foodnouns/cup_of_coffee.jpg',
'images/foodnouns/dinner.jpg',
'images/foodnouns/egg.jpg',
'images/foodnouns/fish.jpg',
'images/foodnouns/food.jpg',
'images/foodnouns/fries.jpg',
'images/foodnouns/fruits.jpg',
'images/foodnouns/glass.jpg',
'images/foodnouns/ice_cream.jpg',
'images/foodnouns/juice.jpg',
'images/foodnouns/knife.jpg',
'images/foodnouns/lunch.jpg',
'images/foodnouns/meal.jpg',
'images/foodnouns/meat.jpg',
'images/foodnouns/milk.jpg',
'images/foodnouns/orange.jpg',
'images/foodnouns/picnic.jpg',
'images/foodnouns/pizza.jpg',
'images/foodnouns/plate.jpg',
'images/foodnouns/potatoes.jpg',
'images/foodnouns/rice.jpg',
'images/foodnouns/salt.jpg',
'images/foodnouns/sandwich.jpg',
'images/foodnouns/soup.jpg',
'images/foodnouns/sugar.jpg',
'images/foodnouns/tea.jpg',
'images/foodnouns/tomato.jpg',
'images/foodnouns/vegetables.jpg',
'images/foodnouns/wine.jpg',];

final List foodNouns =[
'apple',
'banana',
'bar',
'beer',
'biscuits',
'bread',
'breakfast',
'butter',
'cafe',
'cake',
'cheese',
'chocolate',
'coffee',
'cup',
'cup_of_coffee',
'dinner',
'egg',
'fish',
'food',
'fries',
'fruits',
'glass',
'ice_cream',
'juice',
'knife',
'lunch',
'meal',
'meat',
'milk',
'orange',
'picnic',
'pizza',
'plate',
'potatoes',
'rice',
'salt',
'sandwich',
'soup',
'sugar',
'tea',
'tomato',
'vegetables',
'wine',];

Вот как это выглядит на данный момент:

обзор страницы

Теперь я хотел бы иметь возможность воспроизводить звук для каждой карты. У меня есть звуки в моих ресурсах в следующем каталоге: assets: -assets / foodsounds / Я хочу иметь возможность воспроизводить звук из списка моих звуков. вот список:

    final List foodSounds=[
  'assets/foodsounds/apple.mp3',
  'assets/foodsounds/banana.mp3',
  'assets/foodsounds/bar.mp3',
  'assets/foodsounds/beer.mp3',
  'assets/foodsounds/biscuits.mp3',
  'assets/foodsounds/bread.mp3',
  'assets/foodsounds/breakfast.mp3',
  'assets/foodsounds/butter.mp3',
  'assets/foodsounds/café.mp3',
  'assets/foodsounds/cake.mp3',
  'assets/foodsounds/cheese.mp3',
  'assets/foodsounds/chocolate.mp3',
  'assets/foodsounds/coffee.mp3',
  'assets/foodsounds/cup.mp3',
  'assets/foodsounds/cup_of_coffee.mp3',
  'assets/foodsounds/dinner.mp3',
  'assets/foodsounds/egg.mp3',
  'assets/foodsounds/fish.mp3',
  'assets/foodsounds/food.mp3',
  'assets/foodsounds/fries.mp3',
  'assets/foodsounds/fruits.mp3',
  'assets/foodsounds/glass.mp3',
  'assets/foodsounds/ice_cream.mp3',
  'assets/foodsounds/juice.mp3',
  'assets/foodsounds/knife.mp3',
  'assets/foodsounds/lunch.mp3',
  'assets/foodsounds/meal.mp3',
  'assets/foodsounds/meat.mp3',
  'assets/foodsounds/milk.mp3',
  'assets/foodsounds/orange.mp3',
  'assets/foodsounds/picnic.mp3',
  'assets/foodsounds/pizza.mp3',
  'assets/foodsounds/plate.mp3',
  'assets/foodsounds/potatoes.mp3',
  'assets/foodsounds/rice.mp3',
  'assets/foodsounds/salt.mp3',
  'assets/foodsounds/sandwich.mp3',
  'assets/foodsounds/soup.mp3',
  'assets/foodsounds/sugar.mp3',
  'assets/foodsounds/tea.mp3',
  'assets/foodsounds/tomato.mp3',
  'assets/foodsounds/vegetables.mp3',
  'assets/foodsounds/wine.mp3',];

Я думал об использовании пакета audioplayers-0.14.0 примерно так:

    void playFoodSound(int foodSounds) {
    final player = AudioCache(prefix: 'foodsounds/');
    player.play('$foodSounds.mp3');
  }

и использовать его в Swiper следующим образом:

FlatButton(
              onPressed: () => {
                foodSounds[index],
              },

Этот метод не работает. Я попробовал несколько других, и я действительно не могу понять, как воспроизводить эти звуки ...

Я заранее очень благодарен всем за вашу помощь, потому что я действительно не хочу иметь жесткий код эти звуки.

1 Ответ

0 голосов
/ 01 марта 2020

Оказывается, я наконец нашел свой ответ.

Я использовал пакет assets_audio_player 1.2.3. Объявил следующую переменную:

final AssetsAudioPlayer playFoodSound= AssetsAudioPlayer();

и использовал следующее выражение в моем коде:

FlatButton(onPressed: () =>{
                playFoodSound.open(foodSounds[index],),
          },

И он работает как шарм.

...