Youtube_player_flutter: [рдмрдЧ] YoutubePlayerIFrame рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рд╕рдорд╕реНрдпрд╛ (рд╕реНрдкрдВрджрди рд╡реЗрдм)

рдХреЛ рдирд┐рд░реНрдорд┐рдд 3 рдлрд╝рд░ре░ 2021  ┬╖  9рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: sarbagyastha/youtube_player_flutter

рдмрдЧ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВ
рдпрджрд┐ рдЖрдк рд╕реВрдЪреАрджреГрд╢реНрдп рдХреЗ рдЕрдВрджрд░ YoutubePlayerIFrame рдбрд╛рд▓рддреЗ рд╣реИрдВ, рддреЛ рд╡рд┐рдЬреЗрдЯ рдкрд░ рд╣реЛрд╡рд░ рдХрд░реЗрдВ рдФрд░ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ - рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдкреНрд░рдЬрдирди рдХрд░рдирд╛
рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрджрдо:

  1. рд╕реНрдкрдВрджрди рдРрдк рдмрдирд╛рдПрдВ
  2. youtube_player_iframe рдкреИрдХреЗрдЬ рдЬреЛрдбрд╝реЗрдВ
  3. рдПрдХ рд╕реВрдЪреАрджреГрд╢реНрдп рдмрдирд╛рдПрдВ, рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рддрддреНрд╡ рдФрд░ YoutubePlayerIFrame рд╡рд┐рдЬреЗрдЯ рдЬреЛрдбрд╝реЗрдВред
  4. рдЬрдм рдорд╛рдЙрд╕ YoutubePlayerIFrame рд╡рд┐рдЬреЗрдЯ рдкрд░ рд╣реЛрддрд╛ рд╣реИ рддреЛ рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреА рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рднреА рдЗрд╢рд╛рд░реЛрдВ рдХреЛ рд░реЛрдХрддрд╛ рд╣реИред

рдЕрдкреЗрдХреНрд╖рд┐рддреН рд╡реНрдпрд╡рд╣рд╛рд░
ListView рдореВрд▓ рдРрдкреНрд╕ рдХреА рддрд░рд╣ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЯреЗрдХреНрдирд┐рдХрд▓ рдбрд┐рдЯреЗрд▓:

  • рдбрд┐рд╡рд╛рдЗрд╕: [рд╕реНрдкрдВрджрди рд╡реЗрдм]

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдЗрд╕ рдХреЛрдб рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рддрд╛рдХрд┐ рдпрд╣ рд░реЛрдХрд╛ рдЬрд╛ рд╕рдХреЗ рдХрд┐ рдШрдЯрдХ рдореЗрдВ рд╡реЗрдмрд╡реНрдпреВ рд╕реНрдХреНрд░реЙрд▓ рдИрд╡реЗрдВрдЯ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИ

YoutubePlayerIFrame(
      gestureRecognizers: <Factory<OneSequenceGestureRecognizer>>{},
      controller: _controller,
),

рдореЛрдмрд╛рдЗрд▓ рдореЗрдВ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд╕рд╛рджрд░!

рд╕рднреА 9 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЗрд╕ рдХреЛрдб рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рддрд╛рдХрд┐ рдпрд╣ рд░реЛрдХрд╛ рдЬрд╛ рд╕рдХреЗ рдХрд┐ рдШрдЯрдХ рдореЗрдВ рд╡реЗрдмрд╡реНрдпреВ рд╕реНрдХреНрд░реЙрд▓ рдИрд╡реЗрдВрдЯ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИ

YoutubePlayerIFrame(
      gestureRecognizers: <Factory<OneSequenceGestureRecognizer>>{},
      controller: _controller,
),

рдореЛрдмрд╛рдЗрд▓ рдореЗрдВ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд╕рд╛рджрд░!

      gestureRecognizers: <Factory<OneSequenceGestureRecognizer>>{},

рдпрд╣ рд╕рдорд╛рдзрд╛рди рд╡реЗрдм рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдореЗрд░реЗ рд╕рд╛рде рднреА рд╡рд╣реА рджрд┐рдХреНрдХрдд рд╣реИред

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдХреНрдпрд╛ рдХреЛрдИ рд╣реИ рдЬрд┐рд╕рдХреЗ рдкрд╛рд╕ рдЗрд╕рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдХреНрдпрд╛ рдХреЛрдИ рд╣реИ рдЬрд┐рд╕рдХреЗ рдкрд╛рд╕ рдЗрд╕рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?

@quangvtvp рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди рдкреИрдХреЗрдЬ youtube_plyr_iframe рдореЗрдВ рдмрджрд▓рдирд╛ рдерд╛ред

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдХреНрдпрд╛ рдХреЛрдИ рд╣реИ рдЬрд┐рд╕рдХреЗ рдкрд╛рд╕ рдЗрд╕рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?

@quangvtvp рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди рдкреИрдХреЗрдЬ youtube_plyr_iframe рдореЗрдВ рдмрджрд▓рдирд╛ рдерд╛ред

@FerBueroTrebino рдпрд╣ рднреА рд╡реЗрдм рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдХреНрдпрд╛ рдЖрдкрдиреЗ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ?

@deepakrana0011 рдХреНрдпрд╛ рдЖрдкрдиреЗ рд╕реНрдХреНрд░реЙрд▓рдмрд╛рд░ рд╡рд┐рдЬреЗрдЯ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛?

рдореЗрд░реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдХреЛрдб рдпрд╣рд╛рдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

class YoutubePlayer extends StatefulWidget {
  final String videoID;
  YoutubePlayer(this.videoID);
  <strong i="8">@override</strong>
  _YoutubePlayerState createState() => _YoutubePlayerState();
}

class _YoutubePlayerState extends State<YoutubePlayer> {
  <strong i="9">@override</strong>
  Widget build(BuildContext context) {
    return Material(
      color: Colors.transparent,
      child: InkWell(
        onTap: () {
          _showDialog(
            context,
            widget.videoID,
          );
        },
        child: Stack(
          alignment: Alignment.center,
          children: <Widget>[
            Stack(
              children: <Widget>[
                LayoutBuilder(
                  builder: (context, constraints) {
                    if (kIsWeb && constraints.maxWidth > 800) {
                      return Container(
                        color: Colors.transparent,
                        padding: EdgeInsets.all(5),
                        width: MediaQuery.of(context).size.width / 2,
                        child: ClipRRect(
                          borderRadius: BorderRadius.circular(10.0),
                          child: new Image.network(
                            YoutubePlayerController.getThumbnail(
                                videoId: widget.videoID,
                                // todo: get thumbnail quality from list
                                quality: ThumbnailQuality.max),
                            fit: BoxFit.fill,
                          ),
                        ),
                      );
                    } else {
                      return Container(
                        color: Colors.transparent,
                        padding: EdgeInsets.all(5),
                        width: MediaQuery.of(context).size.width * 2,
                        child: ClipRRect(
                          borderRadius: BorderRadius.circular(10.0),
                          child: new Image.network(
                            YoutubePlayerController.getThumbnail(
                                videoId: widget.videoID,
                                // todo: get thumbnail quality from list
                                quality: ThumbnailQuality.max,
                                webp: false),
                            fit: BoxFit.fill,
                          ),
                        ),
                      );
                    }
                  },
                ),
              ],
            ),
            Icon(
              Icons.play_circle_filled,
              color: Colors.white,
              size: 55.0,
            ),
          ],
        ),
      ),
    );
  }

@deepakrana0011 рдХреНрдпрд╛ рдЖрдкрдиреЗ рд╕реНрдХреНрд░реЙрд▓рдмрд╛рд░ рд╡рд┐рдЬреЗрдЯ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛?

рдореЗрд░реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдХреЛрдб рдпрд╣рд╛рдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

class YoutubePlayer extends StatefulWidget {
  final String videoID;
  YoutubePlayer(this.videoID);
  <strong i="9">@override</strong>
  _YoutubePlayerState createState() => _YoutubePlayerState();
}

class _YoutubePlayerState extends State<YoutubePlayer> {
  <strong i="10">@override</strong>
  Widget build(BuildContext context) {
    return Material(
      color: Colors.transparent,
      child: InkWell(
        onTap: () {
          _showDialog(
            context,
            widget.videoID,
          );
        },
        child: Stack(
          alignment: Alignment.center,
          children: <Widget>[
            Stack(
              children: <Widget>[
                LayoutBuilder(
                  builder: (context, constraints) {
                    if (kIsWeb && constraints.maxWidth > 800) {
                      return Container(
                        color: Colors.transparent,
                        padding: EdgeInsets.all(5),
                        width: MediaQuery.of(context).size.width / 2,
                        child: ClipRRect(
                          borderRadius: BorderRadius.circular(10.0),
                          child: new Image.network(
                            YoutubePlayerController.getThumbnail(
                                videoId: widget.videoID,
                                // todo: get thumbnail quality from list
                                quality: ThumbnailQuality.max),
                            fit: BoxFit.fill,
                          ),
                        ),
                      );
                    } else {
                      return Container(
                        color: Colors.transparent,
                        padding: EdgeInsets.all(5),
                        width: MediaQuery.of(context).size.width * 2,
                        child: ClipRRect(
                          borderRadius: BorderRadius.circular(10.0),
                          child: new Image.network(
                            YoutubePlayerController.getThumbnail(
                                videoId: widget.videoID,
                                // todo: get thumbnail quality from list
                                quality: ThumbnailQuality.max,
                                webp: false),
                            fit: BoxFit.fill,
                          ),
                        ),
                      );
                    }
                  },
                ),
              ],
            ),
            Icon(
              Icons.play_circle_filled,
              color: Colors.white,
              size: 55.0,
            ),
          ],
        ),
      ),
    );
  }

@FerBueroTrebino рдХреЛрдб рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЖрдк рдХреЗрд╡рд▓ youtube рд╡реАрдбрд┐рдпреЛ рдХрд╛ рдердВрдмрдиреЗрд▓ рджрд┐рдЦрд╛ рд░рд╣реЗ рд╣реИрдВ рдЬрд╣рд╛рдБ рдЖрдк youtube рд╡реАрдбрд┐рдпреЛ рдЪрд▓рд╛ рд░рд╣реЗ рд╣реИрдВ

рд╡рд╣реА рдпрд╣рд╛рдБ, рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ ....
Iv рдиреЗ рд╕реНрдХреНрд░реИрдЪ рд╕реЗ VIMEO рддрдХ рдПрдХ рдЦрд┐рд▓рд╛рдбрд╝реА рдмрдирд╛рдпрд╛ рдФрд░ рд╕реНрдкрдВрджрди рд╕реЗ рд╡реАрдбрд┐рдпреЛ рдкреНрд▓реЗрдпрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди youtube рдХреЗ рд╕рднреА рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреЗ рдкрд╛рд╕ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдореБрджреНрджреЗ рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЬрд╡рд╛рдм рдХреЛрдИ рдирд╣реАрдВ рджреЗ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рдП

рд╕реНрдХреНрд░реЙрд▓ рдореБрджреНрджреЗ рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ? рдпрд╛ рдХреБрдЫ рдФрд░ рд╡реЗрдм рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?
рдореИрдВрдиреЗ рдХреБрдЫ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА
рдпрд╣: рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

mohadel92 picture mohadel92  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

kyawsithu picture kyawsithu  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

rebeccalee-ysd picture rebeccalee-ysd  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

HiIamAlanOu picture HiIamAlanOu  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

SayaGames picture SayaGames  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ