Flutter开发 页面间的值传递示例
创建两个dart文件,jump.dart为跳转页面,chewie.dart为视频页面,跳转页面有两个按钮,都是跳转视频页面,但是传递的视频地址不一样。
jump.dart
引入chewie.dart,才能使用CheWie()方法。
import 'package:flutter/material.dart';
import 'chewie.dart';void main() {runApp(MyPage());
}class MyPage extends StatelessWidget {const MyPage({super.key}); Widget build(BuildContext context) {return MaterialApp(theme: ThemeData(), home: MyFul());}
}class MyState extends State { Widget build(BuildContext context) {Column column = Column(crossAxisAlignment: CrossAxisAlignment.stretch,children: [OutlinedButton(onPressed: () {Navigator.push(context,MaterialPageRoute(builder: (context) => CheWie(url: 'https://test-videos.co.uk/vids/bigbuckbunny/mp4/h264/360/Big_Buck_Bunny_360_10s_1MB.mp4',)), //跳转到视频页面);},child: Text("跳转1"),),OutlinedButton(onPressed: () {Navigator.push(context,MaterialPageRoute(builder: (context) {return CheWie(url: 'https://sf1-cdn-tos.huoshanstatic.com/obj/media-fe/xgplayer_doc_video/mp4/xgplayer-demo-360p.mp4',);},),);},child: Text("跳转2"),),],);return Scaffold(appBar: AppBar(title: Text(""), centerTitle: true),body: column,);}}class MyFul extends StatefulWidget { State<StatefulWidget> createState() {return MyState();}
}
chewie.dart
创建构造方法,用来接收传值,然后再用home_url保存传来的值
import 'package:chewie/chewie.dart';
import 'package:flutter/material.dart';
import 'package:video_player/video_player.dart';late String home_url;
class CheWie extends StatelessWidget {// const CheWie({super.key});String url;CheWie({required this.url}); Widget build(BuildContext context) {home_url = url;return MaterialApp(theme: ThemeData(), home: MyFul());}
}class MyState extends State {late VideoPlayerController vpc;late ChewieController chewieController;late Future future;void dispose() {super.dispose();vpc.dispose();chewieController.dispose();}void initState() {//视频初始化vpc = VideoPlayerController.networkUrl(Uri.parse(home_url));future = vpc.initialize();} Widget build(BuildContext context) {chewieController = ChewieController(videoPlayerController: vpc,aspectRatio: 16 / 9,autoPlay: true,);Widget cw = Center(child: Chewie(controller: chewieController));return Scaffold(appBar: AppBar(title: Text(""), centerTitle: true),body: Container(child: cw,height: 300,width: MediaQuery.of(context).size.width,color: Colors.black,),);}
}class MyFul extends StatefulWidget { State<StatefulWidget> createState() {return MyState();}
}