0

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

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 路由中播放视频。

如果有人能在这方面帮助我,那对我来说就是世界!谢谢你的时间

4

2 回答 2

1

您似乎缺少widget.访问从 State 类传递给 Stateful Widget 构造函数的变量所需的前缀。尝试这个:

final VideoControllerWrapper videoControllerWrapper = VideoControllerWrapper(
  DataSource.network(
    widget.vidUrl, 
    displayName: widget.title
  ),
);
于 2020-03-09T09:57:48.277 回答
0
  String title;
  String vidUrl;
  final VideoControllerWrapper videoControllerWrapper;
  _MyHomePageState({@required this.title,@required this.vidUrl}) {
    videoControllerWrapper = VideoControllerWrapper(
      DataSource.network(vidUrl, displayName: title),
    );
  }

尝试在构造函数中初始化它

于 2020-03-09T12:03:45.283 回答