【问题标题】:Flutter YouTube video embeddedFlutter YouTube 视频嵌入
【发布时间】:2020-08-25 18:57:28
【问题描述】:

我想在我的应用程序中添加嵌入的 YouTube 视频:我该怎么做?我有这个

导入“包:youtube_player/youtube_player.dart”; 导入“包:flutube/flutube.dart”; 视频类扩展 StatelessWidget { @覆盖 小部件构建(BuildContext 上下文){ 返回脚手架( 应用栏:应用栏( 标题:文本('Canal Youtube'), ), 正文:YoutubePlayer(来源:“https://www.youtube.com/channel/UCuBxtXWWheiQAs-uiJfU5tQ”,质量:YoutubeQuality.HD), ); } }

【问题讨论】:

    标签: flutter


    【解决方案1】:

    我认为你可以使用youtube_player_flutter 包来播放 YouTube 视频。 - 按照安装选项卡上的说明进行操作。然后尝试运行以下:

    import 'package:flutter/material.dart';
    import 'package:youtube_player_flutter/youtube_player_flutter.dart';
    
    void main() {
      runApp(MyApp());
    }
    
    class MyApp extends StatelessWidget {
      // This widget is the root of your application.
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          title: 'Flutter Demo',
          home: MyHomePage(),
        );
      }
    }
    
    class MyHomePage extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        YoutubePlayerController _controller = YoutubePlayerController(
          initialVideoId: 'iLnmTe5Q2Qw',
          flags: YoutubePlayerFlags(
            autoPlay: true,
            mute: true,
          ),
        );
    
        return Scaffold(
          appBar: AppBar(
            title: Text("Youtube test"),
          ),
          body: Center(
            child: YoutubePlayer(
              controller: _controller,
              showVideoProgressIndicator: true,
              progressIndicatorColor: Colors.amber,
              onReady: () {
                print("player ready..");
              },
            ),
          ),
        );
      }
    }
    

    如果您想查看更多选项,还可以查看更详细的示例:here

    【讨论】:

      【解决方案2】:

      Neeko 是一个基于 video_player 的简单视频播放器小部件。 Neek 支持时间轴控制、切换全屏等更多动作。

      class MyHomePage extends StatefulWidget {
        MyHomePage({Key key, this.title}) : super(key: key);
      
        final String title;
      
        @override
        _MyHomePageState createState() => _MyHomePageState();
      }
      
      class _MyHomePageState extends State<MyHomePage> {
      
      //  static const String beeUri = 'https://media.w3.org/2010/05/sintel/trailer.mp4';
        static const String beeUri =
            'http://vfx.mtime.cn/Video/2019/03/09/mp4/190309153658147087.mp4';
      
      
        final VideoControllerWrapper videoControllerWrapper = VideoControllerWrapper(
            DataSource.network(
                'http://vfx.mtime.cn/Video/2019/03/09/mp4/190309153658147087.mp4',
                displayName: "displayName"));
      
        @override
        void initState() {
          super.initState();
          SystemChrome.setEnabledSystemUIOverlays([SystemUiOverlay.top]);
        }
      
        @override
        void dispose() {
          SystemChrome.restoreSystemUIOverlays();
          super.dispose();
        }
      
        
      
        @override
        Widget build(BuildContext context) {
        
          return Scaffold(
            body: NeekoPlayerWidget(
              onSkipPrevious: () {
                print("skip");
                videoControllerWrapper.prepareDataSource(DataSource.network(
                    "http://vfx.mtime.cn/Video/2019/03/12/mp4/190312083533415853.mp4",
                    displayName: "This house is not for sale"));
              },
              videoControllerWrapper: videoControllerWrapper,
              actions: <Widget>[
                IconButton(
                    icon: Icon(
                      Icons.share,
                      color: Colors.white,
                    ),
                    onPressed: () {
                      print("share");
                    })
              ],
            ),
          );
        }
      }
      

      【讨论】:

        猜你喜欢
        • 2020-05-07
        • 2021-12-04
        • 2012-06-25
        • 1970-01-01
        • 2015-06-03
        • 2014-07-07
        • 2019-05-05
        • 1970-01-01
        相关资源
        最近更新 更多