浏览代码

1.认证视频优化,将认证视频缓存到本地,提高访问效率

2.加入群聊点加入无反应,按钮没变色,实际已经加入
3.卸载重装后原本添加过得好友,又显示在申请列表上
网络延迟下解锁红包照片两次出错
master
ZCM 5 年前
父节点
当前提交
2c1e8cd691
共有 15 个文件被更改,包括 1223 次插入1239 次删除
  1. +1
    -1
      i18n/vi-VN.json
  2. +0
    -2
      lib/chat/ChatPageItem.dart
  3. +0
    -1
      lib/chat/group_chat_item.dart
  4. +0
    -1
      lib/chat/msg_state_widge.dart
  5. +0
    -1
      lib/chat/upload_item.dart
  6. +15
    -0
      lib/data/UserData.dart
  7. +2
    -0
      lib/data/constants.dart
  8. +2
    -2
      lib/generated/i18n.dart
  9. +1167
    -1167
      lib/home/ConversActionPage.dart
  10. +8
    -1
      lib/home/VerificationCenter.dart
  11. +7
    -59
      lib/home/VideoPage.dart
  12. +0
    -1
      lib/home/new_friends.dart
  13. +1
    -1
      lib/utils/PicSwiper.dart
  14. +19
    -1
      lib/utils/upload_util.dart
  15. +1
    -1
      pubspec.yaml

+ 1
- 1
i18n/vi-VN.json 查看文件

@@ -857,7 +857,7 @@
"has_get": "Đã nhận", "has_get": "Đã nhận",
"no_gift": "Hiện tại không có phần quà nào", "no_gift": "Hiện tại không có phần quà nào",
"sent_gift": "Quà tặng", "sent_gift": "Quà tặng",
"fill_tips": "Khi bạn điền thông tin thành công sẽ nhận được /s1H tề, không thể sửa đổi sau khi liên kết.",
"fill_tips": "Khi bạn nhập mã mời thành công sẽ nhận được /s1H coin, nhưng không thể sửa đổi sau khi liên kết.",
"bind_code": "Liên kết mã mời", "bind_code": "Liên kết mã mời",
"invide_code": "Mã mời", "invide_code": "Mã mời",
"confirm_delete": "Xác nhận xóa", "confirm_delete": "Xác nhận xóa",


+ 0
- 2
lib/chat/ChatPageItem.dart 查看文件

@@ -13,7 +13,6 @@ import 'package:chat/chat/redbag_widget.dart';
import 'package:chat/chat/upload_item.dart'; import 'package:chat/chat/upload_item.dart';
import 'package:chat/chat/video_view.dart'; import 'package:chat/chat/video_view.dart';
import 'package:chat/data/UserData.dart'; import 'package:chat/data/UserData.dart';
import 'package:chat/data/chat_data_mgr.dart';
import 'package:chat/data/constants.dart'; import 'package:chat/data/constants.dart';
import 'package:chat/generated/i18n.dart'; import 'package:chat/generated/i18n.dart';
import 'package:chat/models/ChatMsg.dart'; import 'package:chat/models/ChatMsg.dart';
@@ -36,7 +35,6 @@ import 'package:chat/utils/sql_util.dart';
import 'package:chat/utils/upload_util.dart'; import 'package:chat/utils/upload_util.dart';
import 'package:chat/utils/video_anim.dart'; import 'package:chat/utils/video_anim.dart';
import 'package:chat/utils/wpop/w_popup_menu.dart'; import 'package:chat/utils/wpop/w_popup_menu.dart';
import 'package:dio/dio.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';


+ 0
- 1
lib/chat/group_chat_item.dart 查看文件

@@ -34,7 +34,6 @@ import 'package:chat/utils/screen.dart';
import 'package:chat/utils/sound_util.dart'; import 'package:chat/utils/sound_util.dart';
import 'package:chat/utils/upload_util.dart'; import 'package:chat/utils/upload_util.dart';
import 'package:chat/utils/video_anim.dart'; import 'package:chat/utils/video_anim.dart';
import 'package:dio/dio.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';


+ 0
- 1
lib/chat/msg_state_widge.dart 查看文件

@@ -1,5 +1,4 @@
import 'package:chat/models/ChatMsg.dart'; import 'package:chat/models/ChatMsg.dart';
import 'package:chat/proto/chat.pbserver.dart';
import 'package:chat/utils/MessageMgr.dart'; import 'package:chat/utils/MessageMgr.dart';
import 'package:chat/utils/msgHandler.dart'; import 'package:chat/utils/msgHandler.dart';
import 'package:chat/utils/upload_util.dart'; import 'package:chat/utils/upload_util.dart';


+ 0
- 1
lib/chat/upload_item.dart 查看文件

@@ -4,7 +4,6 @@ import 'package:chat/utils/MessageMgr.dart';
import 'package:chat/utils/screen.dart'; import 'package:chat/utils/screen.dart';
import 'package:chat/utils/sql_util.dart'; import 'package:chat/utils/sql_util.dart';
import 'package:chat/utils/upload_util.dart'; import 'package:chat/utils/upload_util.dart';
import 'package:dio/dio.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:percent_indicator/percent_indicator.dart'; import 'package:percent_indicator/percent_indicator.dart';


+ 15
- 0
lib/data/UserData.dart 查看文件

@@ -4,6 +4,8 @@ import 'dart:convert';
import 'package:amap_location/amap_location.dart'; import 'package:amap_location/amap_location.dart';
import 'package:chat/data/constants.dart'; import 'package:chat/data/constants.dart';
import 'package:chat/utils/HttpUtil.dart'; import 'package:chat/utils/HttpUtil.dart';
import 'package:chat/utils/LoadingDialog.dart';
import 'package:chat/utils/upload_util.dart';
import 'package:crclib/crclib.dart'; import 'package:crclib/crclib.dart';
import 'package:shared_preferences/shared_preferences.dart'; import 'package:shared_preferences/shared_preferences.dart';
import 'package:vibration/vibration.dart'; import 'package:vibration/vibration.dart';
@@ -252,4 +254,17 @@ class UserData {
}); });
} }
} }
Future getLoaclVideoPath(String url) async {
var key = Constants.LocalCertifiedvideo + basicInfo.userId.toString();
SharedPreferences spf = await SharedPreferences.getInstance();
var path = spf.get(key);
if (path == null) {
LoadingManage().showLoading();
path = await UploadUtil()
.downloadCertifiedvideo(url, () => LoadingManage().closeLoading());
spf.setString(key, path);
}
return path;
}
} }

+ 2
- 0
lib/data/constants.dart 查看文件

@@ -287,6 +287,8 @@ class Constants {
static const GroupAlterKey = 'GroupAlterKey'; //群@ static const GroupAlterKey = 'GroupAlterKey'; //群@
static const LocalCertifiedvideo = 'LocalCertifiedvideo'; //本地认证视频
/// currentGoodsId+'@'+receipt+'@'+purchaseToken /// currentGoodsId+'@'+receipt+'@'+purchaseToken
static final vipIcon = Image.asset( static final vipIcon = Image.asset(


+ 2
- 2
lib/generated/i18n.dart 查看文件

@@ -5137,9 +5137,9 @@ class _I18n_vi_VN extends I18n {
/// "Quà tặng" /// "Quà tặng"
@override @override
String get sent_gift => "Quà tặng"; String get sent_gift => "Quà tặng";
/// "Khi bạn điền thông tin thành công sẽ nhận được /s1H tề, không thể sửa đổi sau khi liên kết."
/// "Khi bạn nhập mã mời thành công sẽ nhận được /s1H coin, nhưng không thể sửa đổi sau khi liên kết."
@override @override
String get fill_tips => "Khi bạn điền thông tin thành công sẽ nhận được /s1H tề, không thể sửa đổi sau khi liên kết.";
String get fill_tips => "Khi bạn nhập mã mời thành công sẽ nhận được /s1H coin, nhưng không thể sửa đổi sau khi liên kết.";
/// "Liên kết mã mời" /// "Liên kết mã mời"
@override @override
String get bind_code => "Liên kết mã mời"; String get bind_code => "Liên kết mã mời";


+ 1167
- 1167
lib/home/ConversActionPage.dart
文件差异内容过多而无法显示
查看文件


+ 8
- 1
lib/home/VerificationCenter.dart 查看文件

@@ -4,6 +4,7 @@ import 'package:chat/data/constants.dart';
import 'package:chat/generated/i18n.dart'; import 'package:chat/generated/i18n.dart';
import 'package:chat/utils/CustomUI.dart'; import 'package:chat/utils/CustomUI.dart';
import 'package:chat/utils/LoadingDialog.dart'; import 'package:chat/utils/LoadingDialog.dart';
import 'package:chat/utils/sp_utils.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:image_picker/image_picker.dart'; import 'package:image_picker/image_picker.dart';
@@ -68,7 +69,8 @@ class _VerificationCenterPageState extends State<VerificationCenterPage> {
if (state == 0 || state == 1) { if (state == 0 || state == 1) {
isPostVideo = true; isPostVideo = true;
videoUrl = resData['data']['AttestationValue']; videoUrl = resData['data']['AttestationValue'];
_controller = VideoPlayerController.network(videoUrl)
var path = await UserData().getLoaclVideoPath(videoUrl);
_controller = VideoPlayerController.file(new File(path))
..initialize().then((_) { ..initialize().then((_) {
setState(() { setState(() {
isLoadingVideoFinish = true; isLoadingVideoFinish = true;
@@ -338,9 +340,14 @@ class _VerificationCenterPageState extends State<VerificationCenterPage> {
isShowLoading: true); isShowLoading: true);
var resData = res.data; var resData = res.data;
if (resData['code'] == 0) { if (resData['code'] == 0) {
SPUtils.saveString(
Constants.LocalCertifiedvideo +
UserData().basicInfo.userId.toString(),
videoFile.path);
showToast(I18n.of(context).success); showToast(I18n.of(context).success);
videoUrl = resData['msg']; videoUrl = resData['msg'];
isPostVideo = true; isPostVideo = true;
isLoadingVideoFinish = true;
_controller = VideoPlayerController.file(videoFile) _controller = VideoPlayerController.file(videoFile)
..initialize().then((_) { ..initialize().then((_) {
// Ensure the first frame is shown after the video is initialized, even before the play button has been pressed. // Ensure the first frame is shown after the video is initialized, even before the play button has been pressed.


+ 7
- 59
lib/home/VideoPage.dart 查看文件

@@ -1,3 +1,6 @@
import 'dart:io';
import 'package:chat/data/UserData.dart';
import 'package:chat/data/constants.dart'; import 'package:chat/data/constants.dart';
import 'package:chat/generated/i18n.dart'; import 'package:chat/generated/i18n.dart';
import 'package:chat/utils/CustomUI.dart'; import 'package:chat/utils/CustomUI.dart';
@@ -8,7 +11,6 @@ import 'package:dio/dio.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:flutter_ijkplayer/flutter_ijkplayer.dart'; import 'package:flutter_ijkplayer/flutter_ijkplayer.dart';
import 'package:video_player/video_player.dart';
class VideoPage extends StatefulWidget { class VideoPage extends StatefulWidget {
final userId; final userId;
@@ -18,7 +20,6 @@ class VideoPage extends StatefulWidget {
} }
class _VideoPageState extends State<VideoPage> { class _VideoPageState extends State<VideoPage> {
VideoPlayerController _controller;
bool isShowPlayButton = true; bool isShowPlayButton = true;
bool isLoadingFish = false; bool isLoadingFish = false;
@@ -35,7 +36,7 @@ class _VideoPageState extends State<VideoPage> {
@override @override
void dispose() { void dispose() {
SystemChrome.setEnabledSystemUIOverlays(SystemUiOverlay.values); SystemChrome.setEnabledSystemUIOverlays(SystemUiOverlay.values);
_controller.dispose();
controller.dispose();
super.dispose(); super.dispose();
} }
@@ -52,26 +53,15 @@ class _VideoPageState extends State<VideoPage> {
if (resData['code'] == 0) { if (resData['code'] == 0) {
var videoUrl = resData['data']['AttestationValue']; var videoUrl = resData['data']['AttestationValue'];
if (videoUrl != '' && videoUrl != null) { if (videoUrl != '' && videoUrl != null) {
// _controller = VideoPlayerController.network(videoUrl)
// ..initialize().then((_) {
// isLoadingFish = true;
// setState(() {});
// });
// _controller.addListener(() {
// if (_controller.value.position >= _controller.value.duration) {
// isShowPlayButton = true;
// setState(() {});
// }
// });
isLoadingFish = true; isLoadingFish = true;
var filePath = await UserData().getLoaclVideoPath(videoUrl);
controller.setFileDataSource(File(filePath), autoPlay: false);
setState(() {}); setState(() {});
WidgetsBinding.instance.addPostFrameCallback((_) {
controller.setNetworkDataSource(videoUrl, autoPlay: false);
});
} }
} }
} }
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
Widget appBar = new AppBar( Widget appBar = new AppBar(
@@ -111,47 +101,5 @@ class _VideoPageState extends State<VideoPage> {
}, },
mediaController: controller, mediaController: controller,
); );
// Widget stack = Stack(
// alignment: Alignment.center,
// children: <Widget>[
//
// Container(
// width: Screen.width,
// child: _controller != null && _controller.value.initialized
// ? AspectRatio(
// aspectRatio: _controller.value.aspectRatio,
// child: VideoPlayer(_controller),
// )
// : Container(),
// ),
// InkWell(
// highlightColor: Colors.transparent,
// radius: 0,
// onTap: () {
// setState(() {
// if (!_controller.value.isPlaying) {
// _controller.seekTo(Duration());
// _controller.play();
// isShowPlayButton = false;
// setState(() {});
// }
// });
// },
// child: Container(
// height: MediaQuery.of(context).size.height,
// color: Colors.black.withOpacity(
// _controller != null && _controller.value.isPlaying ? 0 : 0.5),
// padding: EdgeInsets.only(bottom: 20),
// alignment: Alignment.center,
// child: Image.asset(
// 'assets/images/bofang.png',
// width:
// _controller != null && _controller.value.isPlaying ? 0 : 70,
// ),
// ))
// ],
// );
// return stack;
} }
} }

+ 0
- 1
lib/home/new_friends.dart 查看文件

@@ -13,7 +13,6 @@ import 'package:dio/dio.dart';
import 'package:cached_network_image/cached_network_image.dart'; import 'package:cached_network_image/cached_network_image.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:oktoast/oktoast.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:chat/models/friends_info.dart'; import 'package:chat/models/friends_info.dart';
import 'ProfilePage.dart'; import 'ProfilePage.dart';


+ 1
- 1
lib/utils/PicSwiper.dart 查看文件

@@ -131,7 +131,7 @@ class _PicSwiperState extends State<PicSwiper>
}; };
data['sign'] = TokenMgr().getSign(data); data['sign'] = TokenMgr().getSign(data);
data['price'] = price; data['price'] = price;
Response res = await HttpUtil().post('user/browse/photo', data: data);
Response res = await HttpUtil().post('user/browse/photo', data: data,isShowLoading: true);
Map resData = res.data; Map resData = res.data;
print(resData); print(resData);
if (resData['code'] == 0) { if (resData['code'] == 0) {


+ 19
- 1
lib/utils/upload_util.dart 查看文件

@@ -114,7 +114,7 @@ class UploadUtil {
return cancelMap[fileId]; return cancelMap[fileId];
} }
cancelSendMsg(MsgModel msgModel){
cancelSendMsg(MsgModel msgModel) {
var token = cancelMap[msgModel.extraFile]; var token = cancelMap[msgModel.extraFile];
if (token != null) { if (token != null) {
token.cancel('用户取消'); token.cancel('用户取消');
@@ -265,6 +265,24 @@ class UploadUtil {
} }
} }
//下载认证视频
Future downloadCertifiedvideo(String url, downloadSuccess) async {
Response response;
var path = await FileCacheMgr().genFilePath(url);
try {
response = await dio.download(url, path);
if (response.statusCode == 200) {
if (downloadSuccess != null) downloadSuccess();
return path;
} else {
showToast(I18n.of(Constants.getCurrentContext()).server_error_tips);
return null;
}
} catch (e) {
showToast(I18n.of(Constants.getCurrentContext()).server_error_tips);
}
}
//机器人翻译,type 1文字,2语音 //机器人翻译,type 1文字,2语音
Future<String> commitTranslateSource( Future<String> commitTranslateSource(
int type, int sourceLang, int toLang, dynamic content) async { int type, int sourceLang, int toLang, dynamic content) async {


+ 1
- 1
pubspec.yaml 查看文件

@@ -1,7 +1,7 @@
name: chat name: chat
description: A new Flutter project. description: A new Flutter project.
#修改版本号后get-clean #修改版本号后get-clean
version: 1.1.0+15
version: 1.1.3+17


environment: environment:
sdk: ">=2.1.0 <3.0.0" sdk: ">=2.1.0 <3.0.0"


正在加载...
取消
保存