3

我正在使用youtube_player_flutter并正确实现了所有内容,因为它是在它的 README 中编写的。

但是我仍然面临一个问题,即每当我打开我希望 youtube 播放器打开的那个页面时,它都会一直加载并且永远不会加载视频。

我到处搜索这个问题,但没有得到任何解决方案。其中一个解决方案是将互联网许可包括在AndroidManifest.xml

<uses-permission android:name="android.permission.INTERNET"/>

我这样做了,没有任何改变。我也将包降级到 v6.1.1,有人让我在github issue中这样做,但这也没有做任何事情。

我该如何解决这个问题?

4

1 回答 1

3

我正在回答我自己的问题,因为我在搜索此问题时没有找到任何可以解决此问题的方法。

所以,我尝试了define the controller in initState()它并且它起作用了,现在它是working in v7.0.0+7. 这是我的代码:

class AboutTopic extends StatefulWidget {
  final String videoLink;

  AboutTopic({this.videoLink});

  @override
  _AboutTopicState createState() => _AboutTopicState();
}

class _AboutTopicState extends State<AboutTopic> {
  YoutubePlayerController _controller;

  @override
  void initState() {
     _controller = YoutubePlayerController(
      initialVideoId:
          YoutubePlayer.convertUrlToId(widget.videoLink),
      flags: YoutubePlayerFlags(
          mute: false,
          autoPlay: true,
          disableDragSeek: true,
          loop: false,
          enableCaption: false),
    );

    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
       appBar: AppBar(
        title: Text('About'),
        centerTitle: true,
        leading: IconButton(
          icon: Icon(Icons.arrow_back),
          onPressed: () {
            Navigator.of(context).pop();
          },
        )
      ),

      body: YoutubePlayer(
        controller: _controller,
        showVideoProgressIndicator: true,
        bottomActions: <Widget>[
          const SizedBox(width: 14.0),
          CurrentPosition(),
          const SizedBox(width: 8.0),
          ProgressBar(isExpanded: true),
          RemainingDuration(),
        ],
        aspectRatio: 4 / 3,
        progressIndicatorColor: Colors.white,
        onReady: () {
          print('Player is ready.');
        },
      ),
    );
  }
}
于 2020-12-01T18:17:01.307 回答