错误:初始化器中只能访问静态成员

问题描述 投票:0回答:2

我正在尝试使用以下代码推送新路线-

void selectCategory(BuildContext ctx) {
    Navigator.of(ctx).push(
      MaterialPageRoute(
        builder: (context) => MyHomePage(
          title: title,
          vidUrl: vidUrl, //contains my video url
        ),
      ),
    );
  } 

然后在MyHomePage路由中,我想访问此转发的视频URL。这是我的下面的代码👇🏼

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title, this.vidUrl}) : super(key: key);

  final String title;
  final String vidUrl;

  //MyHomePage({this.title, this.vidUrl});

  @override
  _MyHomePageState createState() => _MyHomePageState(title: title, vidUrl: vidUrl);

}

class _MyHomePageState extends State<MyHomePage> {

  String title; 
  String vidUrl;

  _MyHomePageState({this.title, this.vidUrl});

  //here i'm getting error of only static members can be accessed in vidUrl variable...
  final VideoControllerWrapper videoControllerWrapper = VideoControllerWrapper(
    DataSource.network(vidUrl, 
        displayName: title),
  );

  @override
  void initState() {
    super.initState();
    SystemChrome.setEnabledSystemUIOverlays([SystemUiOverlay.top]);
  }

  @override
  void dispose() {
    SystemChrome.restoreSystemUIOverlays();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Stack(
      children: <Widget>[
        Center(
          child: NeekoPlayerWidget(
            onSkipPrevious: () {
              print("skip");
              videoControllerWrapper.prepareDataSource(
                DataSource.network(
                    vidUrl,
                    displayName: title),
              );
            },
            videoControllerWrapper: videoControllerWrapper,
            actions: <Widget>[
              IconButton(
                icon: Icon(
                  Icons.share,
                  color: Colors.white,
                ),
                onPressed: () {
                  print("share");
                },
              ),
            ],
          ),
        ),
      ],
    );
  }
}

但是,我得到只能访问静态成员的错误,如果将其更改为静态成员,则会发生另一个错误。视频根本没有加载。我想我以错误的方式使用了变量。请通过任何更好的方法来帮助我。我要做的就是使用来自另一个页面的转发链接以MyHomePage路由播放视频。

如果有人可以在这方面帮助我,那对我来说将意味着世界! 感谢您的时间。🙏🏼

flutter dart flutter-layout
2个回答
0
投票
您似乎缺少访问从其State类传递给有状态Widget的构造函数的变量所需的widget.前缀。试试这个:

0
投票
String title; String vidUrl; final VideoControllerWrapper videoControllerWrapper; _MyHomePageState({@required this.title,@required this.vidUrl}) { videoControllerWrapper = VideoControllerWrapper( DataSource.network(vidUrl, displayName: title), ); }
© www.soinside.com 2019 - 2024. All rights reserved.