Hibok
Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.
 
 
 
 
 
 

106 Zeilen
2.9 KiB

  1. import 'dart:io';
  2. import 'package:chat/data/UserData.dart';
  3. import 'package:chat/data/constants.dart';
  4. import 'package:chat/generated/i18n.dart';
  5. import 'package:chat/utils/CustomUI.dart';
  6. import 'package:chat/utils/HttpUtil.dart';
  7. import 'package:chat/utils/TokenMgr.dart';
  8. import 'package:chat/utils/controller_widget_builder.dart';
  9. import 'package:dio/dio.dart';
  10. import 'package:flutter/material.dart';
  11. import 'package:flutter/services.dart';
  12. import 'package:flutter_ijkplayer/flutter_ijkplayer.dart';
  13. class VideoPage extends StatefulWidget {
  14. final userId;
  15. VideoPage({Key key, @required this.userId}) : super(key: key);
  16. _VideoPageState createState() => _VideoPageState();
  17. }
  18. class _VideoPageState extends State<VideoPage> {
  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. isLoadingFish = true;
  47. var filePath = await UserData().getLoaclVideoPath(videoUrl);
  48. controller.setFileDataSource(File(filePath), autoPlay: false);
  49. setState(() {});
  50. }
  51. }
  52. }
  53. @override
  54. Widget build(BuildContext context) {
  55. Widget appBar = new AppBar(
  56. backgroundColor: AppColors.NewAppbarBgColor,
  57. title: new Text(
  58. I18n.of(context).certified_video,
  59. textScaleFactor: 1.0,
  60. style: TextStyle(color: AppColors.NewAppbarTextColor),
  61. ),
  62. centerTitle: true,
  63. leading: CustomUI.buildCustomLeading(context),
  64. );
  65. Widget content = Scaffold(
  66. backgroundColor: const Color(0xFFF4F4F4),
  67. body: Center(
  68. child: Container(
  69. height: MediaQuery.of(context).size.height,
  70. width: MediaQuery.of(context).size.width,
  71. child: _buildVideo(),
  72. ),
  73. ),
  74. appBar: appBar,
  75. resizeToAvoidBottomPadding: false,
  76. );
  77. return CustomUI.buildPageLoading(context, content, !isLoadingFish);
  78. }
  79. Widget _buildVideo() {
  80. return IjkPlayer(
  81. controllerWidgetBuilder: (ctl) {
  82. return MyDefaultIJKControllerWidget(
  83. ///按钮修改
  84. controller: ctl,
  85. hideBackButton: true,
  86. );
  87. },
  88. mediaController: controller,
  89. );
  90. }
  91. }