首页 > 解决方案 > Dart , Flutter 我该如何克服这个错误?我想从地图中获取信息以在此处显示

问题描述

我使用 youtube 播放器插件进行颤动。它工作得很好,但是当我尝试将它链接到 youtube URL 的地图时,它会引发错误。

......................在初始化程序中只能访问静态成员。

[class HomePage extends StatefulWidget {
  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  var videoURL = uRls[0]['1'].tostring();

  YoutubePlayerController _controller;

  Map uRls = {
    "1": "https://www.youtube.com/watch?v=n8X9_MgEdCg",
    "2": "https://www.youtube.com/watch?v=A3co3Tskjtg",
  };

  @override
  void initState() {
    _controller = YoutubePlayerController(
        initialVideoId: YoutubePlayer.convertUrlToId(videoURL));

    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Youtube Player"),
      ),
      body: Container(
        child: SingleChildScrollView(
          child: Column(
            children: <Widget>\[
              YoutubePlayer(
                controller: _controller,
                showVideoProgressIndicator: true,
              ),
            \],
          ),
        ),
      ),
    );
  }
}][2]

标签: flutterdart

解决方案


答案很简单,不要在任何方法之前访问 uRls 映射。

如果你会在 initState 中这样做,你应该没问题。

  YoutubePlayerController _controller;

  Map<String, String> uRls = {
    "1": "https://www.youtube.com/watch?v=n8X9_MgEdCg",
    "2": "https://www.youtube.com/watch?v=A3co3Tskjtg",
  };

  @override
  void initState() {
    var videoURL = uRls[0];

    _controller = YoutubePlayerController(
        initialVideoId: YoutubePlayer.convertUrlToId(videoURL),
      flags: YoutubePlayerFlags(
        autoPlay: true,
  )
);

    super.initState();
  }

由于访问器,我还稍微清理了地图。


推荐阅读