我正在尝试使用以下代码推送新路线-
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路由中播放视频。
如果有人可以在这方面帮助我,那对我来说意味着世界! 感谢您的时间。??
答案 0 :(得分:1)
您似乎缺少访问从其State类传递给有状态Widget的构造函数的变量所需的widget.
前缀。试试这个:
final VideoControllerWrapper videoControllerWrapper = VideoControllerWrapper(
DataSource.network(
widget.vidUrl,
displayName: widget.title
),
);
答案 1 :(得分:0)
String title;
String vidUrl;
final VideoControllerWrapper videoControllerWrapper;
_MyHomePageState({@required this.title,@required this.vidUrl}) {
videoControllerWrapper = VideoControllerWrapper(
DataSource.network(vidUrl, displayName: title),
);
}
尝试在构造函数中对其进行初始化