Hibok
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 
 
 
 

158 linhas
4.8 KiB

  1. import 'package:chat/data/constants.dart';
  2. import 'package:chat/generated/i18n.dart';
  3. import 'package:chat/utils/CustomUI.dart';
  4. import 'package:chat/utils/HttpUtil.dart';
  5. import 'package:chat/utils/TokenMgr.dart';
  6. import 'package:chat/utils/controller_widget_builder.dart';
  7. import 'package:dio/dio.dart';
  8. import 'package:flutter/material.dart';
  9. import 'package:flutter/services.dart';
  10. import 'package:flutter_ijkplayer/flutter_ijkplayer.dart';
  11. import 'package:video_player/video_player.dart';
  12. class VideoPage extends StatefulWidget {
  13. final userId;
  14. VideoPage({Key key, @required this.userId}) : super(key: key);
  15. _VideoPageState createState() => _VideoPageState();
  16. }
  17. class _VideoPageState extends State<VideoPage> {
  18. VideoPlayerController _controller;
  19. bool isShowPlayButton = true;
  20. bool isLoadingFish = false;
  21. IjkMediaController controller = IjkMediaController();
  22. @override
  23. void initState() {
  24. super.initState();
  25. SystemChrome.setEnabledSystemUIOverlays([]);
  26. getInfo();
  27. }
  28. @override
  29. void dispose() {
  30. SystemChrome.setEnabledSystemUIOverlays(SystemUiOverlay.values);
  31. _controller.dispose();
  32. super.dispose();
  33. }
  34. getInfo() async {
  35. Map data = {
  36. "userId": widget.userId,
  37. };
  38. data['sign'] = TokenMgr().getSign(data);
  39. Response res = await HttpUtil().post('user/female/authInfo',
  40. data: data, failback: () => Navigator.of(context).pop());
  41. Map resData = res.data;
  42. print(resData);
  43. if (resData['code'] == 0) {
  44. var videoUrl = resData['data']['AttestationValue'];
  45. if (videoUrl != '' && videoUrl != null) {
  46. // _controller = VideoPlayerController.network(videoUrl)
  47. // ..initialize().then((_) {
  48. // isLoadingFish = true;
  49. // setState(() {});
  50. // });
  51. // _controller.addListener(() {
  52. // if (_controller.value.position >= _controller.value.duration) {
  53. // isShowPlayButton = true;
  54. // setState(() {});
  55. // }
  56. // });
  57. isLoadingFish = true;
  58. setState(() {});
  59. WidgetsBinding.instance.addPostFrameCallback((_) {
  60. controller.setNetworkDataSource(videoUrl, autoPlay: false);
  61. });
  62. }
  63. }
  64. }
  65. @override
  66. Widget build(BuildContext context) {
  67. Widget appBar = new AppBar(
  68. backgroundColor: AppColors.NewAppbarBgColor,
  69. title: new Text(
  70. I18n.of(context).certified_video,
  71. textScaleFactor: 1.0,
  72. style: TextStyle(color: AppColors.NewAppbarTextColor),
  73. ),
  74. centerTitle: true,
  75. leading: CustomUI.buildCustomLeading(context),
  76. );
  77. Widget content = Scaffold(
  78. backgroundColor: const Color(0xFFF4F4F4),
  79. body: Center(
  80. child: Container(
  81. height: MediaQuery.of(context).size.height,
  82. width: MediaQuery.of(context).size.width,
  83. child: _buildVideo(),
  84. ),
  85. ),
  86. appBar: appBar,
  87. resizeToAvoidBottomPadding: false,
  88. );
  89. return CustomUI.buildPageLoading(context, content, !isLoadingFish);
  90. }
  91. Widget _buildVideo() {
  92. return IjkPlayer(
  93. controllerWidgetBuilder: (ctl) {
  94. return MyDefaultIJKControllerWidget(
  95. ///按钮修改
  96. controller: ctl,
  97. hideBackButton: true,
  98. );
  99. },
  100. mediaController: controller,
  101. );
  102. // Widget stack = Stack(
  103. // alignment: Alignment.center,
  104. // children: <Widget>[
  105. //
  106. // Container(
  107. // width: Screen.width,
  108. // child: _controller != null && _controller.value.initialized
  109. // ? AspectRatio(
  110. // aspectRatio: _controller.value.aspectRatio,
  111. // child: VideoPlayer(_controller),
  112. // )
  113. // : Container(),
  114. // ),
  115. // InkWell(
  116. // highlightColor: Colors.transparent,
  117. // radius: 0,
  118. // onTap: () {
  119. // setState(() {
  120. // if (!_controller.value.isPlaying) {
  121. // _controller.seekTo(Duration());
  122. // _controller.play();
  123. // isShowPlayButton = false;
  124. // setState(() {});
  125. // }
  126. // });
  127. // },
  128. // child: Container(
  129. // height: MediaQuery.of(context).size.height,
  130. // color: Colors.black.withOpacity(
  131. // _controller != null && _controller.value.isPlaying ? 0 : 0.5),
  132. // padding: EdgeInsets.only(bottom: 20),
  133. // alignment: Alignment.center,
  134. // child: Image.asset(
  135. // 'assets/images/bofang.png',
  136. // width:
  137. // _controller != null && _controller.value.isPlaying ? 0 : 70,
  138. // ),
  139. // ))
  140. // ],
  141. // );
  142. // return stack;
  143. }
  144. }