ListView.Builder play/Pause buttom flutter

后端 未结 3 1237
醉酒成梦
醉酒成梦 2020-12-21 18:50

I am using a ListView.builder to create an audio list, I need to change the play button pause individually to an item when I select it, I have tried a bool but giving play o

3条回答
  •  爱一瞬间的悲伤
    2020-12-21 19:25

    import 'package:flutter/material.dart';
    
    class Sample extends StatefulWidget {
      @override
      _SampleState createState() => _SampleState();
    }
    
    class _SampleState extends State {
      bool isPressed = false;
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          body: ListView(
            children: [
              Column(
                children: [
                  IconButton(
                      icon: Icon(isPressed
                          ? Icons.play_circle_filled
                          : Icons.pause_circle_filled),
                      onPressed: () {
                        setState(() {
                          isPressed = !isPressed;
                        });
                      }),
                  IconButton(
                      icon: Icon(isPressed
                          ? Icons.play_circle_filled
                          : Icons.pause_circle_filled),
                      onPressed: () {
                        setState(() {
                          isPressed = !isPressed;
                        });
                      }),
                  PlayPause(
                    isPressed: isPressed,
                  ),
                  PlayPause(),
                ],
              )
            ],
          ),
        );
      }
    }
    
    class PlayPause extends StatefulWidget {
      const PlayPause({
        Key key,
        this.isPressed = false,
      }) : super(key: key);
      final bool isPressed;
    
      @override
      _PlayPauseState createState() => _PlayPauseState();
    }
    
    class _PlayPauseState extends State {
      bool _isPressed;
      @override
      void initState() {
        super.initState();
        _isPressed = widget.isPressed;
      }
    
      @override
      Widget build(BuildContext context) {
        return IconButton(
            icon: Icon(
                _isPressed ? Icons.play_circle_filled : Icons.pause_circle_filled),
            onPressed: () {
              setState(() {
                _isPressed = !_isPressed;
              });
            });
      }
    }
    
    

提交回复
热议问题