main.dart 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. import 'package:chewie/chewie.dart';
  2. import 'package:flutter/cupertino.dart';
  3. import 'package:flutter/gestures.dart';
  4. import 'package:flutter/material.dart';
  5. import 'package:video_player/video_player.dart';
  6. void main() {
  7. runApp(
  8. MaterialApp(
  9. home: Page1(),
  10. )
  11. );
  12. }
  13. class Page1 extends StatelessWidget {
  14. @override
  15. Widget build(BuildContext context) {
  16. // TODO: implement build
  17. return Container(
  18. color: Colors.white,
  19. child: GestureDetector(
  20. onTap: () {
  21. Navigator.push<void>(context, CupertinoPageRoute(builder: (_) => ChewieDemo()));
  22. },
  23. )
  24. );
  25. }
  26. }
  27. class ChewieDemo extends StatefulWidget {
  28. ChewieDemo({this.title = 'Chewie Demo'});
  29. final String title;
  30. @override
  31. State<StatefulWidget> createState() {
  32. return _ChewieDemoState();
  33. }
  34. }
  35. class _ChewieDemoState extends State<ChewieDemo> {
  36. TargetPlatform _platform;
  37. VideoPlayerController _videoPlayerController1;
  38. VideoPlayerController _videoPlayerController2;
  39. ChewieController _chewieController;
  40. double aspectRatio=1;
  41. I2MaterialControls _i2materialControls;
  42. @override
  43. void initState() {
  44. super.initState();
  45. _i2materialControls = I2MaterialControls(
  46. enableQuickControl: true,
  47. );
  48. _videoPlayerController1 = VideoPlayerController.network(
  49. 'http://mirror.aarnet.edu.au/pub/TED-talks/911Mothers_2010W-480p.mp4')
  50. ..initialize().then((_){
  51. _chewieController = ChewieController(
  52. videoPlayerController: _videoPlayerController1,
  53. allowedScreenSleep: false,
  54. aspectRatio: _videoPlayerController1.value.aspectRatio,
  55. autoPlay: true,
  56. looping: true,
  57. customControls: _i2materialControls,
  58. );
  59. setState(() {
  60. });
  61. });
  62. _videoPlayerController2 = VideoPlayerController.network(
  63. 'https://v-cdn.zjol.com.cn/276985.mp4')
  64. ..initialize().then((_){
  65. setState(() {
  66. });
  67. });
  68. }
  69. @override
  70. void dispose() {
  71. _videoPlayerController1.dispose();
  72. _videoPlayerController2.dispose();
  73. _chewieController.dispose();
  74. super.dispose();
  75. }
  76. @override
  77. Widget build(BuildContext context) {
  78. return MaterialApp(
  79. title: widget.title,
  80. theme: ThemeData.light().copyWith(
  81. platform: _platform ?? Theme.of(context).platform,
  82. ),
  83. home: Scaffold(
  84. // appBar: AppBar(
  85. // title: Text(widget.title),
  86. // ),
  87. body: Column(
  88. children: <Widget>[
  89. Stack(
  90. children: <Widget>[
  91. Container(
  92. // constraints: BoxConstraints(maxHeight: 200),
  93. child: _chewieController == null ? Container() : Chewie(
  94. controller: _chewieController,
  95. ),
  96. color: Colors.black,
  97. ),
  98. ],
  99. )
  100. ],
  101. ),
  102. ),
  103. );
  104. }
  105. }