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

#android #flutter #dart #carousel #flip

#Android #трепетание #дротик #карусель #перевернуть

Вопрос:

Я новичок в flutter, и я создаю флэш-карту, которая при длительном нажатии на картинку будет издавать звуки. Я это сделал. Моя проблема в том, как я могу использовать флип, поскольку это флэш-карта, у нее есть передняя и задняя картинка. каждое изображение имеет свой особый звук. Я также использовал карусель в Pub dev (карусель, флип-карта). Я нажал кнопку, но она не сработала. Я получил сообщение об ошибке. В нем говорится, что глобальный ключ используется несколько раз. Так что это неудачный план. Я также думал о создании кнопки для прокрутки изображений, но это не сработало. Как я могу перевернуть карту и воспроизвести звук? Это мой код, если у вас есть вопросы, пожалуйста, задавайте, я отвечу, чтобы решить эту проблему. Спасибо

 import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:carousel_slider/carousel_slider.dart';
import 'package:assets_audio_player/assets_audio_player.dart';
import 'package:baybay_app/FlashCards/FlashcardsList.dart';
import 'package:flip_card/flip_card.dart';

class Flashcards extends StatefulWidget {
  final List<FlashcardsList> _flashCardsList = flashcardsList;
  @override
  _FlashcardsState createState() => _FlashcardsState();
}

class _FlashcardsState extends State<Flashcards> {
  CarouselController buttonCarouselController = CarouselController();
  List<FlashcardsList> flashCardsList;
  @override
  void initState() {
    super.initState();
    flashCardsList = widget._flashCardsList;
  }

  Widget build(BuildContext context) => Scaffold(
    appBar: AppBar(title:Text('Sample Carousel')),
    body: Column(
        children: <Widget>[

          CarouselSlider.builder(
            itemBuilder:(context, index){

              return
                Card(
                  child:FlipCard(
                    front: ListTile(

                      title: Image(
                          image: AssetImage(
                              widget._flashCardsList[index].pictures1)
                      ),
                  ),



                    back: ListTile(

                      title: Image(
                          image: AssetImage(
                              widget._flashCardsList[index].pictures2)
                      ),
                    ),
                  ),


                );



            },
            itemCount: widget._flashCardsList.length,
            options: CarouselOptions(

              autoPlay: false,
              enlargeCenterPage: true,
              viewportFraction: 0.9,
              aspectRatio: 2.0,
              initialPage: 2,
            ),

          ),
        ]

    ),

      );
      void onPlayAudio(index) async{
        AssetsAudioPlayer assetsAudioPlayer = AssetsAudioPlayer();
        assetsAudioPlayer.open(
            Audio(widget._flashCardsList[index].sound1)
        );
      }
      void PlayAudio(index) async{
        AssetsAudioPlayer assetsAudioPlayer = AssetsAudioPlayer();
        assetsAudioPlayer.open(
            Audio(widget._flashCardsList[index].sound2)
        );
      }
    }

'''
 

У меня также есть список фотографий, которые нужно поместить на карточку.

Ответ №1:

Вы можете обернуть свою открытку виджетом «Чернильница». И вы можете обрабатывать длительное нажатие на карту. Это будет выглядеть примерно так:

  Widget build(BuildContext context) => Scaffold(
        appBar: AppBar(title: Text('Sample Carousel')),
        body: Column(children: <Widget>[
          CarouselSlider.builder(
            itemBuilder: (context, index) {
              return InkWell(
                onLongPress: () {
                  onPlayAudio(index);
                },
                child: Card(
                  child: FlipCard(
                    front: ListTile(
                      title: Image(
                          image: AssetImage(
                              widget._flashCardsList[index].pictures1)),
                    ),
                    back: ListTile(
                      title: Image(
                          image: AssetImage(
                              widget._flashCardsList[index].pictures2)),
                    ),
                  ),
                ),
              );
            },
            itemCount: widget._flashCardsList.length,
            options: CarouselOptions(
              autoPlay: false,
              enlargeCenterPage: true,
              viewportFraction: 0.9,
              aspectRatio: 2.0,
              initialPage: 2,
            ),
          ),
        ]),
      );

 

Комментарии:

1. Это работает, спасибо. Именно так я и хотел, чтобы это было. Ты мой спаситель здесь, хахаха. Теперь проблема в том, как я могу воспроизводить звук сзади? Я так благодарен вам. Спасибо