Commit 57e6f922a0f875ec71f2e9c784c6f5c66b4c9eab

Authored by wdn127929
1 parent d5a0989f

评论管理仅能测试,不能打包版

@@ -33,9 +33,9 @@ if (flutterRoot == null) { @@ -33,9 +33,9 @@ if (flutterRoot == null) {
33 33
34 34
35 35
36 -def flutterVersionCode = "503" 36 +def flutterVersionCode = "504"
37 if (flutterVersionCode == null) { 37 if (flutterVersionCode == null) {
38 - flutterVersionCode = '503' 38 + flutterVersionCode = '504'
39 39
40 40
41 } 41 }
@@ -44,9 +44,9 @@ if (flutterVersionCode == null) { @@ -44,9 +44,9 @@ if (flutterVersionCode == null) {
44 44
45 45
46 46
47 -def flutterVersionName = "5.0.3" 47 +def flutterVersionName = "5.0.4"
48 if (flutterVersionName == null) { 48 if (flutterVersionName == null) {
49 - flutterVersionName = '5.0.3' 49 + flutterVersionName = '5.0.4'
50 50
51 } 51 }
52 52
@@ -3,3 +3,4 @@ org.gradle.jvmargs=-Xmx1536M @@ -3,3 +3,4 @@ org.gradle.jvmargs=-Xmx1536M
3 android.enableR8=true 3 android.enableR8=true
4 android.useAndroidX=true 4 android.useAndroidX=true
5 android.enableJetifier=true 5 android.enableJetifier=true
  6 +# android.jetifier.blacklist=bcprov-jdk15on
@@ -3,7 +3,7 @@ @@ -3,7 +3,7 @@
3 archiveVersion = 1; 3 archiveVersion = 1;
4 classes = { 4 classes = {
5 }; 5 };
6 - objectVersion = 46; 6 + objectVersion = 50;
7 objects = { 7 objects = {
8 8
9 /* Begin PBXBuildFile section */ 9 /* Begin PBXBuildFile section */
@@ -209,6 +209,7 @@ class CommentsImageModel { @@ -209,6 +209,7 @@ class CommentsImageModel {
209 ImageInfo imageInfo; 209 ImageInfo imageInfo;
210 ImageAve imageAve; 210 ImageAve imageAve;
211 String url; 211 String url;
  212 + String avinfo;
212 213
213 CommentsImageModel( 214 CommentsImageModel(
214 {this.key, 215 {this.key,
@@ -218,7 +219,8 @@ class CommentsImageModel { @@ -218,7 +219,8 @@ class CommentsImageModel {
218 this.exif, 219 this.exif,
219 this.imageInfo, 220 this.imageInfo,
220 this.imageAve, 221 this.imageAve,
221 - this.url}); 222 + this.url,
  223 + this.avinfo});
222 224
223 CommentsImageModel.fromJson(Map<String, dynamic> json) { 225 CommentsImageModel.fromJson(Map<String, dynamic> json) {
224 key = json['key']; 226 key = json['key'];
@@ -233,6 +235,7 @@ class CommentsImageModel { @@ -233,6 +235,7 @@ class CommentsImageModel {
233 ? new ImageAve.fromJson(json['imageAve']) 235 ? new ImageAve.fromJson(json['imageAve'])
234 : null; 236 : null;
235 url = json['url']; 237 url = json['url'];
  238 + avinfo =json['avinfo'] == null ? null : jsonEncode(json['avinfo']);
236 } 239 }
237 240
238 Map<String, dynamic> toJson() { 241 Map<String, dynamic> toJson() {
@@ -249,6 +252,8 @@ class CommentsImageModel { @@ -249,6 +252,8 @@ class CommentsImageModel {
249 data['imageAve'] = this.imageAve.toJson(); 252 data['imageAve'] = this.imageAve.toJson();
250 } 253 }
251 data['url'] = this.url; 254 data['url'] = this.url;
  255 +
  256 + data['avinfo'] = this.avinfo;
252 return data; 257 return data;
253 } 258 }
254 } 259 }
@@ -49,7 +49,7 @@ class _CouponSettingPageState extends State<CouponSettingPage> { @@ -49,7 +49,7 @@ class _CouponSettingPageState extends State<CouponSettingPage> {
49 49
50 List<CouponSunModel> couponDataList = []; 50 List<CouponSunModel> couponDataList = [];
51 bool isComments = false; //启用评价设置 51 bool isComments = false; //启用评价设置
52 - bool isCommentsCoupon = false; //启用评价送券 52 + bool isCommentsCoupon = false; //启用评价送券
53 List<CouponSunModel> couponDataListComments = []; 53 List<CouponSunModel> couponDataListComments = [];
54 @override 54 @override
55 void initState() { 55 void initState() {
@@ -438,7 +438,7 @@ class _CouponSettingPageState extends State<CouponSettingPage> { @@ -438,7 +438,7 @@ class _CouponSettingPageState extends State<CouponSettingPage> {
438 Map temp = 438 Map temp =
439 await NavigatorUtil.goMarkingCouponSelectPage( 439 await NavigatorUtil.goMarkingCouponSelectPage(
440 context, {'object': couponDataList}); 440 context, {'object': couponDataList});
441 - if (temp['coupon'] != null) { 441 + if (temp != null && temp['coupon'] != null) {
442 couponDataList = temp['coupon']; 442 couponDataList = temp['coupon'];
443 443
444 setState(() {}); 444 setState(() {});
  1 +import 'dart:ui';
  2 +
1 import 'package:cached_network_image/cached_network_image.dart'; 3 import 'package:cached_network_image/cached_network_image.dart';
  4 +import 'package:fijkplayer/fijkplayer.dart';
2 import 'package:flutter/material.dart'; 5 import 'package:flutter/material.dart';
3 import 'package:flutter/rendering.dart'; 6 import 'package:flutter/rendering.dart';
4 import 'package:one_key/models/comments_label_model.dart'; 7 import 'package:one_key/models/comments_label_model.dart';
5 import 'package:one_key/models/comments_model.dart'; 8 import 'package:one_key/models/comments_model.dart';
6 import 'package:one_key/pages/my/comment_manage/input_buttom_widget.dart'; 9 import 'package:one_key/pages/my/comment_manage/input_buttom_widget.dart';
7 import 'package:one_key/pages/my/comment_manage/pop_route.dart'; 10 import 'package:one_key/pages/my/comment_manage/pop_route.dart';
  11 +import 'package:one_key/pages/my/comment_manage/video_page.dart';
8 import 'package:one_key/provider/user_model.dart'; 12 import 'package:one_key/provider/user_model.dart';
9 import 'package:one_key/res/colors.dart'; 13 import 'package:one_key/res/colors.dart';
10 import 'package:one_key/utils/dialog_util.dart'; 14 import 'package:one_key/utils/dialog_util.dart';
@@ -13,6 +17,7 @@ import 'package:one_key/widgets/round_button.dart'; @@ -13,6 +17,7 @@ import 'package:one_key/widgets/round_button.dart';
13 import 'package:one_key/widgets/system_app_bar.dart'; 17 import 'package:one_key/widgets/system_app_bar.dart';
14 import 'package:one_key/widgets/v_empty_view.dart'; 18 import 'package:one_key/widgets/v_empty_view.dart';
15 import 'package:provider/provider.dart'; 19 import 'package:provider/provider.dart';
  20 +import 'package:video_player/video_player.dart';
16 21
17 import '../../../constant/state.dart'; 22 import '../../../constant/state.dart';
18 import '../../../provider/comment_manage_provider.dart'; 23 import '../../../provider/comment_manage_provider.dart';
@@ -21,7 +26,10 @@ import '../../../utils/screen_util.dart'; @@ -21,7 +26,10 @@ import '../../../utils/screen_util.dart';
21 import '../../../utils/utils.dart'; 26 import '../../../utils/utils.dart';
22 import '../../../widgets/page_exception.dart'; 27 import '../../../widgets/page_exception.dart';
23 import '../../online_check/photo_view_wiget.dart'; 28 import '../../online_check/photo_view_wiget.dart';
24 -import 'package:sliding_up_panel2/sliding_up_panel2.dart'; 29 +// import 'package:chewie/chewie.dart';
  30 +// import 'package:fijkplayer/fijkplayer.dart';
  31 +// import 'package:video_thumbnail/video_thumbnail.dart';
  32 +import 'package:cached_video_player/cached_video_player.dart';
25 33
26 /** 34 /**
27 * 评价管理 35 * 评价管理
@@ -40,6 +48,13 @@ class _CommentManageHomePageState extends State<CommentManageHomePage> { @@ -40,6 +48,13 @@ class _CommentManageHomePageState extends State<CommentManageHomePage> {
40 String label = ''; 48 String label = '';
41 49
42 TextEditingController replyController = TextEditingController(); 50 TextEditingController replyController = TextEditingController();
  51 + // 声明控制器(两个)
  52 + CachedVideoPlayerController videoPlayerController;
  53 + // ChewieController chewieController;
  54 + // final FijkPlayer player = FijkPlayer();
  55 + // VideoPlayerController _controller;
  56 + Future _initializeVideoPlayerFuture;
  57 +
43 @override 58 @override
44 void initState() { 59 void initState() {
45 super.initState(); 60 super.initState();
@@ -48,7 +63,7 @@ class _CommentManageHomePageState extends State<CommentManageHomePage> { @@ -48,7 +63,7 @@ class _CommentManageHomePageState extends State<CommentManageHomePage> {
48 63
49 WidgetsBinding.instance.addPostFrameCallback((_) { 64 WidgetsBinding.instance.addPostFrameCallback((_) {
50 _getSellerComments(isShowLoading: false); 65 _getSellerComments(isShowLoading: false);
51 - _getCountCommentLabel(isShowLoading: false); 66 + // _getCountCommentLabel(isShowLoading: false);
52 }); 67 });
53 } 68 }
54 69
@@ -56,18 +71,20 @@ class _CommentManageHomePageState extends State<CommentManageHomePage> { @@ -56,18 +71,20 @@ class _CommentManageHomePageState extends State<CommentManageHomePage> {
56 void dispose() { 71 void dispose() {
57 bus.emit('changeStatusColor'); 72 bus.emit('changeStatusColor');
58 73
  74 + // videoPlayerController.dispose();
  75 +
59 super.dispose(); 76 super.dispose();
60 } 77 }
61 78
62 ///评价标签 79 ///评价标签
63 - _getCountCommentLabel({bool isShowLoading = true}) async {  
64 - Map<String, String> pramas = {  
65 - 'sid': Provider.of<UserModel>(context, listen: false).user.sellerid,  
66 - };  
67 - // label  
68 - await commentManageProvider.getCountCommentLabel(context, pramas,  
69 - isShowLoading: isShowLoading);  
70 - } 80 + // _getCountCommentLabel({bool isShowLoading = true}) async {
  81 + // Map<String, String> pramas = {
  82 + // 'sid': Provider.of<UserModel>(context, listen: false).user.sellerid,
  83 + // };
  84 + // // label
  85 + // await commentManageProvider.getCountCommentLabel(context, pramas,
  86 + // isShowLoading: isShowLoading);
  87 + // }
71 88
72 ///评价列表 89 ///评价列表
73 _getSellerComments({bool isShowLoading = true}) async { 90 _getSellerComments({bool isShowLoading = true}) async {
@@ -76,9 +93,9 @@ class _CommentManageHomePageState extends State<CommentManageHomePage> { @@ -76,9 +93,9 @@ class _CommentManageHomePageState extends State<CommentManageHomePage> {
76 'scene': '3', 93 'scene': '3',
77 'status': '1' 94 'status': '1'
78 }; 95 };
79 - if (label != '') {  
80 - pramas['label'] = label;  
81 - } 96 + // if (label != '') {
  97 + // pramas['label'] = label;
  98 + // }
82 99
83 await commentManageProvider.getSellerComments(context, pramas, 100 await commentManageProvider.getSellerComments(context, pramas,
84 isShowLoading: isShowLoading); 101 isShowLoading: isShowLoading);
@@ -102,67 +119,67 @@ class _CommentManageHomePageState extends State<CommentManageHomePage> { @@ -102,67 +119,67 @@ class _CommentManageHomePageState extends State<CommentManageHomePage> {
102 } 119 }
103 } 120 }
104 121
105 - List<Widget> _labelWidget() {  
106 - List<Widget> data = [];  
107 - data.add(InkWell(  
108 - onTap: () {  
109 - allSelect = true;  
110 - commentManageProvider.commentsLabeldata.forEach((element) {  
111 - element.select = false;  
112 - });  
113 - setState(() {});  
114 - label = '';  
115 - _getSellerComments(isShowLoading: true);  
116 - },  
117 - child: Container(  
118 - padding: EdgeInsets.symmetric(horizontal: w(8), vertical: w(3)),  
119 - decoration: BoxDecoration(  
120 - borderRadius: BorderRadius.circular(r(10)),  
121 - color: allSelect  
122 - ? MyColours.color_33438E93  
123 - : MyColours.color_F8F7F3),  
124 - child: Text(  
125 - '全部',  
126 - style: TextStyle(  
127 - fontSize: font(14),  
128 - color: allSelect  
129 - ? MyColours.color_438E93  
130 - : MyColours.color_515151),  
131 - ),  
132 - )));  
133 - for (int i = 0; i < commentManageProvider.commentsLabeldata.length; i++) {  
134 - CommentsLabelSunModel sunModel =  
135 - commentManageProvider.commentsLabeldata[i];  
136 - data.add(InkWell(  
137 - onTap: () {  
138 - commentManageProvider.commentsLabeldata.forEach((element) {  
139 - element.select = false;  
140 - });  
141 - allSelect = false;  
142 - sunModel.select = true;  
143 - setState(() {});  
144 - label = sunModel.name;  
145 - _getSellerComments(isShowLoading: true);  
146 - },  
147 - child: Container(  
148 - padding: EdgeInsets.symmetric(horizontal: w(8), vertical: w(3)),  
149 - decoration: BoxDecoration(  
150 - borderRadius: BorderRadius.circular(r(10)),  
151 - color: sunModel.select  
152 - ? MyColours.color_33438E93  
153 - : MyColours.color_F8F7F3),  
154 - child: Text(  
155 - sunModel.name,  
156 - style: TextStyle(  
157 - fontSize: font(14),  
158 - color: sunModel.select  
159 - ? MyColours.color_438E93  
160 - : MyColours.color_515151),  
161 - ),  
162 - )));  
163 - }  
164 - return data;  
165 - } 122 + // List<Widget> _labelWidget() {
  123 + // List<Widget> data = [];
  124 + // data.add(InkWell(
  125 + // onTap: () {
  126 + // allSelect = true;
  127 + // commentManageProvider.commentsLabeldata.forEach((element) {
  128 + // element.select = false;
  129 + // });
  130 + // setState(() {});
  131 + // label = '';
  132 + // _getSellerComments(isShowLoading: true);
  133 + // },
  134 + // child: Container(
  135 + // padding: EdgeInsets.symmetric(horizontal: w(8), vertical: w(3)),
  136 + // decoration: BoxDecoration(
  137 + // borderRadius: BorderRadius.circular(r(10)),
  138 + // color: allSelect
  139 + // ? MyColours.color_33438E93
  140 + // : MyColours.color_F8F7F3),
  141 + // child: Text(
  142 + // '全部',
  143 + // style: TextStyle(
  144 + // fontSize: font(14),
  145 + // color: allSelect
  146 + // ? MyColours.color_438E93
  147 + // : MyColours.color_515151),
  148 + // ),
  149 + // )));
  150 + // for (int i = 0; i < commentManageProvider.commentsLabeldata.length; i++) {
  151 + // CommentsLabelSunModel sunModel =
  152 + // commentManageProvider.commentsLabeldata[i];
  153 + // data.add(InkWell(
  154 + // onTap: () {
  155 + // commentManageProvider.commentsLabeldata.forEach((element) {
  156 + // element.select = false;
  157 + // });
  158 + // allSelect = false;
  159 + // sunModel.select = true;
  160 + // setState(() {});
  161 + // label = sunModel.name;
  162 + // _getSellerComments(isShowLoading: true);
  163 + // },
  164 + // child: Container(
  165 + // padding: EdgeInsets.symmetric(horizontal: w(8), vertical: w(3)),
  166 + // decoration: BoxDecoration(
  167 + // borderRadius: BorderRadius.circular(r(10)),
  168 + // color: sunModel.select
  169 + // ? MyColours.color_33438E93
  170 + // : MyColours.color_F8F7F3),
  171 + // child: Text(
  172 + // sunModel.name,
  173 + // style: TextStyle(
  174 + // fontSize: font(14),
  175 + // color: sunModel.select
  176 + // ? MyColours.color_438E93
  177 + // : MyColours.color_515151),
  178 + // ),
  179 + // )));
  180 + // }
  181 + // return data;
  182 + // }
166 183
167 /// 九宫格 184 /// 九宫格
168 Widget _getGridImg(List<CommentsImageModel> imags) { 185 Widget _getGridImg(List<CommentsImageModel> imags) {
@@ -184,9 +201,63 @@ class _CommentManageHomePageState extends State<CommentManageHomePage> { @@ -184,9 +201,63 @@ class _CommentManageHomePageState extends State<CommentManageHomePage> {
184 //子组件宽高长度比例 201 //子组件宽高长度比例
185 childAspectRatio: 1.0), 202 childAspectRatio: 1.0),
186 itemBuilder: (BuildContext context, int index) { 203 itemBuilder: (BuildContext context, int index) {
  204 + if (imags[index].avinfo != null) {
  205 + videoPlayerController =
  206 + CachedVideoPlayerController.network(imags[index].url);
  207 + videoPlayerController.setLooping(false);
  208 + _initializeVideoPlayerFuture = videoPlayerController.initialize();
  209 +
  210 + //视频
  211 + return InkWell(
  212 + onTap: () {
  213 + Navigator.push(
  214 + context,
  215 + PopRoute(
  216 + child: VideoPage(
  217 + url: imags[index].url,
  218 + )));
  219 + },
  220 + child: Stack(alignment: Alignment.center, children: [
  221 + ClipRRect(
  222 + borderRadius: BorderRadius.circular(r(8)),
  223 + child: FutureBuilder(
  224 + //显示缩略图
  225 + future: _initializeVideoPlayerFuture,
  226 + builder: (context, snapshot) {
  227 + print(snapshot.connectionState);
  228 + if (snapshot.hasError) print(snapshot.error);
  229 + if (snapshot.connectionState ==
  230 + ConnectionState.done) {
  231 + return AspectRatio(
  232 + aspectRatio: 1 / 1,
  233 + // aspectRatio: _controller.value.aspectRatio,
  234 + // child: VideoPlayer(videoPlayerController),
  235 + child:
  236 + CachedVideoPlayer(videoPlayerController));
  237 + } else {
  238 + return Center(
  239 + child: CircularProgressIndicator(),
  240 + );
  241 + }
  242 + },
  243 + )),
  244 + Positioned(
  245 + child: Image.asset(
  246 + Utils.getImgPath('play'),
  247 + width: w(20),
  248 + ))
  249 + ]));
  250 + }
  251 +
187 return InkWell( 252 return InkWell(
188 onTap: () { 253 onTap: () {
189 - List<String> images = imags.map((e) => e.url).toList(); 254 + List<String> images = [];
  255 + imags.forEach((element) {
  256 + if (!element.mimeType.startsWith('video')) {
  257 + images.add(element.url);
  258 + }
  259 + });
  260 +
190 _showPhotoView(context, index, images); 261 _showPhotoView(context, index, images);
191 }, 262 },
192 child: ClipRRect( 263 child: ClipRRect(
@@ -246,7 +317,7 @@ class _CommentManageHomePageState extends State<CommentManageHomePage> { @@ -246,7 +317,7 @@ class _CommentManageHomePageState extends State<CommentManageHomePage> {
246 return ExceptionPage( 317 return ExceptionPage(
247 pageState: model.pageState, 318 pageState: model.pageState,
248 callback: () async { 319 callback: () async {
249 - _getCountCommentLabel(); 320 + // _getCountCommentLabel();
250 _getSellerComments(); 321 _getSellerComments();
251 }, 322 },
252 emptyMsg: "暂时没有评论列表信息哦", 323 emptyMsg: "暂时没有评论列表信息哦",
@@ -259,13 +330,13 @@ class _CommentManageHomePageState extends State<CommentManageHomePage> { @@ -259,13 +330,13 @@ class _CommentManageHomePageState extends State<CommentManageHomePage> {
259 padding: EdgeInsets.symmetric(horizontal: w(20)), 330 padding: EdgeInsets.symmetric(horizontal: w(20)),
260 child: Column( 331 child: Column(
261 children: [ 332 children: [
262 - Container(  
263 - child: Wrap(  
264 - runSpacing: w(10),  
265 - spacing: w(10),  
266 - children: _labelWidget()),  
267 - ),  
268 - VEmptyView(10), 333 + // Container(
  334 + // child: Wrap(
  335 + // runSpacing: w(10),
  336 + // spacing: w(10),
  337 + // children: _labelWidget()),
  338 + // ),
  339 + // VEmptyView(10),
269 Expanded( 340 Expanded(
270 child: ListView.builder( 341 child: ListView.builder(
271 itemCount: 342 itemCount:
@@ -299,10 +370,7 @@ class _CommentManageHomePageState extends State<CommentManageHomePage> { @@ -299,10 +370,7 @@ class _CommentManageHomePageState extends State<CommentManageHomePage> {
299 BorderRadius.circular(w(50)), 370 BorderRadius.circular(w(50)),
300 child: sunModel.authorImage != 371 child: sunModel.authorImage !=
301 null && 372 null &&
302 - sunModel.authorImage !=  
303 - '' &&  
304 - !sunModel.authorImage  
305 - .endsWith('.mp4') 373 + sunModel.authorImage != ''
306 ? CachedNetworkImage( 374 ? CachedNetworkImage(
307 imageUrl: 375 imageUrl:
308 sunModel.authorImage, 376 sunModel.authorImage,
@@ -356,51 +424,51 @@ class _CommentManageHomePageState extends State<CommentManageHomePage> { @@ -356,51 +424,51 @@ class _CommentManageHomePageState extends State<CommentManageHomePage> {
356 color: MyColours 424 color: MyColours
357 .color_515151), 425 .color_515151),
358 )), 426 )),
359 - Spacer(),  
360 - Container(  
361 - width: w(75),  
362 - height: w(24),  
363 - child: ListView  
364 - .builder(  
365 - itemCount:  
366 - 5,  
367 - shrinkWrap:  
368 - true,  
369 - scrollDirection:  
370 - Axis  
371 - .horizontal,  
372 - itemBuilder:  
373 - (context,  
374 - index) {  
375 - return CachedNetworkImage(  
376 - imageUrl: index <=  
377 - int.parse(sunModel.grade) - 1  
378 - ? 'http://nosqn.colorcun.com/pinglun/p%20%283%29.png'  
379 - : 'http://nosqn.colorcun.com/pinglun/p%20%284%29.png',  
380 - width: w(  
381 - 15),  
382 - );  
383 - })),  
384 - HEmptyView(3),  
385 - Container(  
386 - padding: EdgeInsets  
387 - .symmetric(  
388 - vertical:  
389 - w(4)),  
390 - child: Text(  
391 - starTextMap[  
392 - '${sunModel.grade}'] ??  
393 - '',  
394 - maxLines: 2,  
395 - overflow:  
396 - TextOverflow  
397 - .ellipsis,  
398 - style: TextStyle(  
399 - fontSize:  
400 - font(12),  
401 - color: MyColours  
402 - .color_999999),  
403 - )), 427 + // Spacer(),
  428 + // Container(
  429 + // width: w(75),
  430 + // height: w(24),
  431 + // child: ListView
  432 + // .builder(
  433 + // itemCount:
  434 + // 5,
  435 + // shrinkWrap:
  436 + // true,
  437 + // scrollDirection:
  438 + // Axis
  439 + // .horizontal,
  440 + // itemBuilder:
  441 + // (context,
  442 + // index) {
  443 + // return CachedNetworkImage(
  444 + // imageUrl: index <=
  445 + // int.parse(sunModel.grade) - 1
  446 + // ? 'http://nosqn.colorcun.com/pinglun/p%20%283%29.png'
  447 + // : 'http://nosqn.colorcun.com/pinglun/p%20%284%29.png',
  448 + // width: w(
  449 + // 15),
  450 + // );
  451 + // })),
  452 + // HEmptyView(3),
  453 + // Container(
  454 + // padding: EdgeInsets
  455 + // .symmetric(
  456 + // vertical:
  457 + // w(4)),
  458 + // child: Text(
  459 + // starTextMap[
  460 + // '${sunModel.grade}'] ??
  461 + // '',
  462 + // maxLines: 2,
  463 + // overflow:
  464 + // TextOverflow
  465 + // .ellipsis,
  466 + // style: TextStyle(
  467 + // fontSize:
  468 + // font(12),
  469 + // color: MyColours
  470 + // .color_999999),
  471 + // )),
404 ], 472 ],
405 ), 473 ),
406 VEmptyView(8), 474 VEmptyView(8),
@@ -409,7 +477,7 @@ class _CommentManageHomePageState extends State<CommentManageHomePage> { @@ -409,7 +477,7 @@ class _CommentManageHomePageState extends State<CommentManageHomePage> {
409 .symmetric( 477 .symmetric(
410 vertical: w(4)), 478 vertical: w(4)),
411 child: Text( 479 child: Text(
412 - '就餐于 ${sunModel.ddate} ${sunModel.ddateSolt} ${sunModel.tableinfo}', 480 + '就餐于 ${sunModel.ddate ?? ''} ${sunModel.ddateSolt ?? ''} ${sunModel.tableinfo ?? ''}',
413 maxLines: 10, 481 maxLines: 10,
414 overflow: TextOverflow 482 overflow: TextOverflow
415 .ellipsis, 483 .ellipsis,
@@ -452,19 +520,19 @@ class _CommentManageHomePageState extends State<CommentManageHomePage> { @@ -452,19 +520,19 @@ class _CommentManageHomePageState extends State<CommentManageHomePage> {
452 color: MyColours 520 color: MyColours
453 .color_515151), 521 .color_515151),
454 )), 522 )),
455 - Container(  
456 - padding: EdgeInsets  
457 - .symmetric(  
458 - vertical: w(4)),  
459 - child: Text(  
460 - '#${sunModel.evalLabel ?? ''}',  
461 - style: TextStyle(  
462 - height: 1.8,  
463 - fontSize:  
464 - font(12),  
465 - color: MyColours  
466 - .color_438E93),  
467 - )), 523 + // Container(
  524 + // padding: EdgeInsets
  525 + // .symmetric(
  526 + // vertical: w(4)),
  527 + // child: Text(
  528 + // '#${sunModel.evalLabel ?? ''}',
  529 + // style: TextStyle(
  530 + // height: 1.8,
  531 + // fontSize:
  532 + // font(12),
  533 + // color: MyColours
  534 + // .color_438E93),
  535 + // )),
468 if (sunModel 536 if (sunModel
469 .enclosure.length > 537 .enclosure.length >
470 0) 538 0)
  1 +import 'package:fijkplayer/fijkplayer.dart';
  2 +import 'package:flutter/material.dart';
  3 +import 'package:one_key/res/colors.dart';
  4 +import 'package:one_key/widgets/system_app_bar.dart';
  5 +
  6 +// import 'custom_ui.dart';
  7 +
  8 +class VideoPage extends StatefulWidget {
  9 + final String url;
  10 +
  11 + VideoPage({this.url});
  12 +
  13 + @override
  14 + _VideoPageState createState() => _VideoPageState();
  15 +}
  16 +
  17 +class _VideoPageState extends State<VideoPage> {
  18 + final FijkPlayer player = FijkPlayer();
  19 +
  20 + _VideoPageState();
  21 +
  22 + @override
  23 + void initState() {
  24 + super.initState();
  25 + player.setOption(FijkOption.hostCategory, "enable-snapshot", 1);
  26 + player.setOption(FijkOption.playerCategory, "mediacodec-all-videos", 1);
  27 + startPlay();
  28 + }
  29 +
  30 + void startPlay() async {
  31 + await player.setOption(FijkOption.hostCategory, "request-screen-on", 1);
  32 + await player.setOption(FijkOption.hostCategory, "request-audio-focus", 1);
  33 + await player.setDataSource(widget.url, autoPlay: true).catchError((e) {
  34 + print("setDataSource error: $e");
  35 + });
  36 + }
  37 +
  38 + @override
  39 + Widget build(BuildContext context) {
  40 + return Scaffold(
  41 + appBar: SystemAppBar("评价管理"),
  42 + body: Container(
  43 + child: Center(
  44 + child: FijkView(
  45 + color: MyColours.color_000000,
  46 + player: player,
  47 + panelBuilder: fijkPanel2Builder(snapShot: true),
  48 + fsFit: FijkFit.fill,
  49 + // panelBuilder: simplestUI,
  50 + // panelBuilder: (FijkPlayer player, BuildContext context,
  51 + // Size viewSize, Rect texturePos) {
  52 + // return CustomFijkPanel(
  53 + // player: player,
  54 + // buildContext: context,
  55 + // viewSize: viewSize,
  56 + // texturePos: texturePos);
  57 + // },
  58 + ),
  59 + ),
  60 + ),
  61 + );
  62 + }
  63 +
  64 + @override
  65 + void dispose() {
  66 + super.dispose();
  67 + player.release();
  68 + }
  69 +}
@@ -31,7 +31,10 @@ import '../../../../models/coupon_model.dart'; @@ -31,7 +31,10 @@ import '../../../../models/coupon_model.dart';
31 */ 31 */
32 class MarkingCouponSelectPage extends StatefulWidget { 32 class MarkingCouponSelectPage extends StatefulWidget {
33 final List<CouponSunModel> couponList; 33 final List<CouponSunModel> couponList;
34 - MarkingCouponSelectPage({Key key, this.couponList}) : super(key: key); 34 +
  35 + final bool mulSelect;
  36 + MarkingCouponSelectPage({Key key, this.couponList, this.mulSelect = true})
  37 + : super(key: key);
35 38
36 @override 39 @override
37 _MarkingCouponSelectPageState createState() => 40 _MarkingCouponSelectPageState createState() =>
@@ -92,7 +95,6 @@ class _MarkingCouponSelectPageState extends State<MarkingCouponSelectPage> { @@ -92,7 +95,6 @@ class _MarkingCouponSelectPageState extends State<MarkingCouponSelectPage> {
92 95
93 @override 96 @override
94 void dispose() { 97 void dispose() {
95 -  
96 super.dispose(); 98 super.dispose();
97 } 99 }
98 100
@@ -140,23 +142,28 @@ class _MarkingCouponSelectPageState extends State<MarkingCouponSelectPage> { @@ -140,23 +142,28 @@ class _MarkingCouponSelectPageState extends State<MarkingCouponSelectPage> {
140 return InkWell( 142 return InkWell(
141 onTap: () { 143 onTap: () {
142 //改这里 ******8 144 //改这里 ******8
143 - // couponProvider.couponListSelect  
144 - // .forEach((element) {  
145 - // element.isCheck = false;  
146 - // });  
147 -  
148 - // couponProvider.couponListSelect[index].isCheck =  
149 - // true;  
150 - couponProvider.couponListSelect[index].isCheck =  
151 - !couponProvider  
152 - .couponListSelect[index].isCheck;  
153 - if (couponProvider  
154 - .couponListSelect[index].isCheck) {  
155 - selectDataList.add(  
156 - couponProvider.couponListSelect[index]); 145 + if (widget.mulSelect) {
  146 + couponProvider.couponListSelect[index].isCheck =
  147 + !couponProvider
  148 + .couponListSelect[index].isCheck;
  149 + if (couponProvider
  150 + .couponListSelect[index].isCheck) {
  151 + selectDataList.add(
  152 + couponProvider.couponListSelect[index]);
  153 + } else {
  154 + selectDataList.remove(
  155 + couponProvider.couponListSelect[index]);
  156 + }
157 } else { 157 } else {
158 - selectDataList.remove( 158 + couponProvider.couponListSelect
  159 + .forEach((element) {
  160 + element.isCheck = false;
  161 + });
  162 + selectDataList = [];
  163 + selectDataList.add(
159 couponProvider.couponListSelect[index]); 164 couponProvider.couponListSelect[index]);
  165 + couponProvider.couponListSelect[index].isCheck =
  166 + true;
160 } 167 }
161 168
162 setState(() {}); 169 setState(() {});
@@ -188,21 +195,30 @@ class _MarkingCouponSelectPageState extends State<MarkingCouponSelectPage> { @@ -188,21 +195,30 @@ class _MarkingCouponSelectPageState extends State<MarkingCouponSelectPage> {
188 // bool old = couponProvider 195 // bool old = couponProvider
189 // .couponListSelect[index].isCheck; 196 // .couponListSelect[index].isCheck;
190 //改这里 ******8 197 //改这里 ******8
191 - couponProvider  
192 - .couponListSelect[index].isCheck =  
193 - !couponProvider  
194 - .couponListSelect[index].isCheck;  
195 - if (couponProvider  
196 - .couponListSelect[index].isCheck) {  
197 - selectDataList.add(  
198 - couponProvider.couponListSelect[index]); 198 + if (widget.mulSelect) {
  199 + couponProvider
  200 + .couponListSelect[index].isCheck =
  201 + !couponProvider
  202 + .couponListSelect[index].isCheck;
  203 + if (couponProvider
  204 + .couponListSelect[index].isCheck) {
  205 + selectDataList.add(couponProvider
  206 + .couponListSelect[index]);
  207 + } else {
  208 + selectDataList.remove(couponProvider
  209 + .couponListSelect[index]);
  210 + }
199 } else { 211 } else {
200 - selectDataList.remove( 212 + couponProvider.couponListSelect
  213 + .forEach((element) {
  214 + element.isCheck = false;
  215 + });
  216 + selectDataList = [];
  217 + selectDataList.add(
201 couponProvider.couponListSelect[index]); 218 couponProvider.couponListSelect[index]);
  219 + couponProvider
  220 + .couponListSelect[index].isCheck = true;
202 } 221 }
203 -  
204 - // couponProvider  
205 - // .couponListSelect[index].isCheck = !old;  
206 setState(() {}); 222 setState(() {});
207 })); 223 }));
208 }, childCount: couponProvider.couponListSelect.length), 224 }, childCount: couponProvider.couponListSelect.length),
@@ -486,11 +486,17 @@ class _CommentsSettingPageState extends State<CommentsSettingPage> { @@ -486,11 +486,17 @@ class _CommentsSettingPageState extends State<CommentsSettingPage> {
486 }, 486 },
487 onPressed: () async { 487 onPressed: () async {
488 //切换活动 488 //切换活动
  489 +
489 Map temp = 490 Map temp =
490 await NavigatorUtil.goMarkingCouponSelectPage( 491 await NavigatorUtil.goMarkingCouponSelectPage(
491 context, 492 context,
492 - {'object': couponDataListComments});  
493 - if (temp['coupon'] != null) { 493 + {'object': couponDataListComments},
  494 + mulSelect: false);
  495 + // Map temp = await NavigatorUtil.goCouponSelectPage(
  496 + // context,
  497 + // from: 'statistics',
  498 + // hasModify: false);
  499 + if (temp!= null && temp['coupon'] != null) {
494 couponDataListComments = temp['coupon']; 500 couponDataListComments = temp['coupon'];
495 501
496 setState(() {}); 502 setState(() {});
@@ -1459,12 +1459,10 @@ class NavigatorUtil { @@ -1459,12 +1459,10 @@ class NavigatorUtil {
1459 1459
1460 ///预订安排通知定制------优惠券选择 1460 ///预订安排通知定制------优惠券选择
1461 static Future<dynamic> goMarkingCouponSelectPage( 1461 static Future<dynamic> goMarkingCouponSelectPage(
1462 - BuildContext context,  
1463 - Map object, {  
1464 - replace = false,  
1465 - }) { 1462 + BuildContext context, Map object,
  1463 + {replace = false, bool mulSelect = true}) {
1466 return _navigateTo(context, 1464 return _navigateTo(context,
1467 - "${Routes.marking_coupon_select_page}?object=${FluroConvertUtils.object2string(object)}", 1465 + "${Routes.marking_coupon_select_page}?object=${FluroConvertUtils.object2string(object)}&mulSelect=${mulSelect}",
1468 replace: replace); 1466 replace: replace);
1469 } 1467 }
1470 1468
@@ -2504,11 +2504,13 @@ var markingCouponSelectPageHandle = new Handler( @@ -2504,11 +2504,13 @@ var markingCouponSelectPageHandle = new Handler(
2504 res.add(CouponSunModel.fromJson(item)); 2504 res.add(CouponSunModel.fromJson(item));
2505 } 2505 }
2506 } 2506 }
  2507 +
  2508 + bool mulSelect = FluroConvertUtils.string2bool(params["mulSelect"].first);
2507 // NotebookDetail detailEntity = NotebookDetail.fromJson(json 2509 // NotebookDetail detailEntity = NotebookDetail.fromJson(json
2508 // .decode(FluroConvertUtils.fluroCnParamsDecode(params["detail"].first))); 2510 // .decode(FluroConvertUtils.fluroCnParamsDecode(params["detail"].first)));
2509 return ChangeNotifierProvider<MarketingCenterProvider>( 2511 return ChangeNotifierProvider<MarketingCenterProvider>(
2510 create: (_) => MarketingCenterProvider(), 2512 create: (_) => MarketingCenterProvider(),
2511 - child: MarkingCouponSelectPage(couponList: res)); 2513 + child: MarkingCouponSelectPage(couponList: res, mulSelect: mulSelect));
2512 }); 2514 });
2513 2515
2514 //我的----营销中心-预订安排预览页 2516 //我的----营销中心-预订安排预览页
@@ -3017,9 +3019,6 @@ var commentManageHomePageHandle = new Handler( @@ -3017,9 +3019,6 @@ var commentManageHomePageHandle = new Handler(
3017 create: (_) => CommentManageProvider(), child: CommentManageHomePage()); 3019 create: (_) => CommentManageProvider(), child: CommentManageHomePage());
3018 }); 3020 });
3019 3021
3020 -  
3021 -  
3022 -  
3023 //客户通知----评价配置页 3022 //客户通知----评价配置页
3024 var commentsSettingPageHandle = new Handler( 3023 var commentsSettingPageHandle = new Handler(
3025 handlerFunc: (BuildContext context, Map<String, List<Object>> params) { 3024 handlerFunc: (BuildContext context, Map<String, List<Object>> params) {
@@ -169,6 +169,13 @@ packages: @@ -169,6 +169,13 @@ packages:
169 url: "https://pub.flutter-io.cn" 169 url: "https://pub.flutter-io.cn"
170 source: hosted 170 source: hosted
171 version: "1.0.1" 171 version: "1.0.1"
  172 + cached_video_player:
  173 + dependency: "direct main"
  174 + description:
  175 + name: cached_video_player
  176 + url: "https://pub.flutter-io.cn"
  177 + source: hosted
  178 + version: "2.0.4"
172 characters: 179 characters:
173 dependency: transitive 180 dependency: transitive
174 description: 181 description:
@@ -400,6 +407,13 @@ packages: @@ -400,6 +407,13 @@ packages:
400 url: "https://pub.flutter-io.cn" 407 url: "https://pub.flutter-io.cn"
401 source: hosted 408 source: hosted
402 version: "1.1.2" 409 version: "1.1.2"
  410 + fijkplayer:
  411 + dependency: "direct main"
  412 + description:
  413 + name: fijkplayer
  414 + url: "https://pub.flutter-io.cn"
  415 + source: hosted
  416 + version: "0.11.0"
403 file: 417 file:
404 dependency: transitive 418 dependency: transitive
405 description: 419 description:
@@ -930,35 +944,35 @@ packages: @@ -930,35 +944,35 @@ packages:
930 name: permission_handler 944 name: permission_handler
931 url: "https://pub.flutter-io.cn" 945 url: "https://pub.flutter-io.cn"
932 source: hosted 946 source: hosted
933 - version: "10.0.0" 947 + version: "10.4.3"
934 permission_handler_android: 948 permission_handler_android:
935 dependency: transitive 949 dependency: transitive
936 description: 950 description:
937 name: permission_handler_android 951 name: permission_handler_android
938 url: "https://pub.flutter-io.cn" 952 url: "https://pub.flutter-io.cn"
939 source: hosted 953 source: hosted
940 - version: "10.0.0" 954 + version: "10.3.4"
941 permission_handler_apple: 955 permission_handler_apple:
942 dependency: transitive 956 dependency: transitive
943 description: 957 description:
944 name: permission_handler_apple 958 name: permission_handler_apple
945 url: "https://pub.flutter-io.cn" 959 url: "https://pub.flutter-io.cn"
946 source: hosted 960 source: hosted
947 - version: "9.0.4" 961 + version: "9.1.4"
948 permission_handler_platform_interface: 962 permission_handler_platform_interface:
949 dependency: transitive 963 dependency: transitive
950 description: 964 description:
951 name: permission_handler_platform_interface 965 name: permission_handler_platform_interface
952 url: "https://pub.flutter-io.cn" 966 url: "https://pub.flutter-io.cn"
953 source: hosted 967 source: hosted
954 - version: "3.7.0" 968 + version: "3.11.3"
955 permission_handler_windows: 969 permission_handler_windows:
956 dependency: transitive 970 dependency: transitive
957 description: 971 description:
958 name: permission_handler_windows 972 name: permission_handler_windows
959 url: "https://pub.flutter-io.cn" 973 url: "https://pub.flutter-io.cn"
960 source: hosted 974 source: hosted
961 - version: "0.1.0" 975 + version: "0.1.3"
962 petitparser: 976 petitparser:
963 dependency: transitive 977 dependency: transitive
964 description: 978 description:
@@ -1401,40 +1415,47 @@ packages: @@ -1401,40 +1415,47 @@ packages:
1401 source: hosted 1415 source: hosted
1402 version: "3.1.1" 1416 version: "3.1.1"
1403 video_player: 1417 video_player:
1404 - dependency: "direct main" 1418 + dependency: transitive
1405 description: 1419 description:
1406 name: video_player 1420 name: video_player
1407 url: "https://pub.flutter-io.cn" 1421 url: "https://pub.flutter-io.cn"
1408 source: hosted 1422 source: hosted
1409 - version: "2.4.7" 1423 + version: "2.6.0"
1410 video_player_android: 1424 video_player_android:
1411 dependency: transitive 1425 dependency: transitive
1412 description: 1426 description:
1413 name: video_player_android 1427 name: video_player_android
1414 url: "https://pub.flutter-io.cn" 1428 url: "https://pub.flutter-io.cn"
1415 source: hosted 1429 source: hosted
1416 - version: "2.3.5" 1430 + version: "2.4.3"
1417 video_player_avfoundation: 1431 video_player_avfoundation:
1418 dependency: transitive 1432 dependency: transitive
1419 description: 1433 description:
1420 name: video_player_avfoundation 1434 name: video_player_avfoundation
1421 url: "https://pub.flutter-io.cn" 1435 url: "https://pub.flutter-io.cn"
1422 source: hosted 1436 source: hosted
1423 - version: "2.3.4" 1437 + version: "2.4.2"
1424 video_player_platform_interface: 1438 video_player_platform_interface:
1425 dependency: transitive 1439 dependency: transitive
1426 description: 1440 description:
1427 name: video_player_platform_interface 1441 name: video_player_platform_interface
1428 url: "https://pub.flutter-io.cn" 1442 url: "https://pub.flutter-io.cn"
1429 source: hosted 1443 source: hosted
1430 - version: "5.1.2" 1444 + version: "5.1.4"
1431 video_player_web: 1445 video_player_web:
1432 dependency: transitive 1446 dependency: transitive
1433 description: 1447 description:
1434 name: video_player_web 1448 name: video_player_web
1435 url: "https://pub.flutter-io.cn" 1449 url: "https://pub.flutter-io.cn"
1436 source: hosted 1450 source: hosted
1437 - version: "2.0.10" 1451 + version: "2.0.15"
  1452 + video_thumbnail:
  1453 + dependency: "direct main"
  1454 + description:
  1455 + name: video_thumbnail
  1456 + url: "https://pub.flutter-io.cn"
  1457 + source: hosted
  1458 + version: "0.5.3"
1438 wakelock: 1459 wakelock:
1439 dependency: transitive 1460 dependency: transitive
1440 description: 1461 description:
@@ -135,14 +135,18 @@ dependencies: @@ -135,14 +135,18 @@ dependencies:
135 #苹果登陆 135 #苹果登陆
136 sign_in_with_apple: ^3.0.0 136 sign_in_with_apple: ^3.0.0
137 # sign_in_with_apple: ^3.0.0 137 # sign_in_with_apple: ^3.0.0
138 - # video_thumbnail: ^0.2.5  
139 - video_player: ^2.4.7 138 + video_thumbnail: ^0.5.3
  139 + # video_player: ^2.4.7
  140 + # video_player: ^2.7.0
140 # video_player: ^2.4.2 141 # video_player: ^2.4.2
  142 + # video_player: ^2.2.12
141 # ^2.4.7 143 # ^2.4.7
142 # chewie: ^1.3.3 144 # chewie: ^1.3.3
143 chewie: ^1.3.5 145 chewie: ^1.3.5
  146 + cached_video_player: ^2.0.4
144 # 视频播放 147 # 视频播放
145 # flutter_ijkplayer: 0.3.5+1 148 # flutter_ijkplayer: 0.3.5+1
  149 + # fijkplayer: ^0.11.0
146 # 视频信息获取 150 # 视频信息获取
147 # video_compress: ^2.1.1 151 # video_compress: ^2.1.1
148 video_compress: ^3.1.1 152 video_compress: ^3.1.1
@@ -198,6 +202,9 @@ dependencies: @@ -198,6 +202,9 @@ dependencies:
198 #评论弹框 202 #评论弹框
199 sliding_up_panel2: ^3.3.0+1 203 sliding_up_panel2: ^3.3.0+1
200 204
  205 + #视频播放
  206 + fijkplayer: ^0.11.0
  207 +
201 208
202 209
203 # shimmer: ^3.0.0 210 # shimmer: ^3.0.0