@@ -1 +1 @@ | |||||
{"_info":"// This is a generated file; do not edit or check into version control.","dependencyGraph":[{"name":"agora_rtc_engine","dependencies":[]},{"name":"amap_location","dependencies":[]},{"name":"android_intent","dependencies":[]},{"name":"app_installer","dependencies":[]},{"name":"apple_sign_in","dependencies":[]},{"name":"audioplayer","dependencies":[]},{"name":"auto_orientation","dependencies":[]},{"name":"city_pickers","dependencies":[]},{"name":"connectivity","dependencies":[]},{"name":"easy_contact_picker","dependencies":[]},{"name":"file_picker","dependencies":[]},{"name":"flutter_app_badger","dependencies":[]},{"name":"flutter_audio_recorder","dependencies":[]},{"name":"flutter_bugly","dependencies":[]},{"name":"flutter_facebook_login","dependencies":[]},{"name":"flutter_ijkplayer","dependencies":[]},{"name":"flutter_inapp_purchase","dependencies":[]},{"name":"flutter_local_notifications","dependencies":[]},{"name":"flutter_native_image","dependencies":[]},{"name":"flutter_plugin_android_lifecycle","dependencies":[]},{"name":"flutter_qr_reader","dependencies":["image_picker"]},{"name":"flutter_webview_plugin","dependencies":[]},{"name":"fluwx_no_pay","dependencies":[]},{"name":"geolocator","dependencies":["google_api_availability","location_permissions"]},{"name":"google_api_availability","dependencies":[]},{"name":"google_maps_flutter","dependencies":[]},{"name":"image_cropper","dependencies":[]},{"name":"image_gallery_saver","dependencies":[]},{"name":"image_picker","dependencies":["flutter_plugin_android_lifecycle"]},{"name":"jpush_flutter","dependencies":[]},{"name":"keyboard_utils","dependencies":[]},{"name":"location","dependencies":[]},{"name":"location_permissions","dependencies":[]},{"name":"open_file","dependencies":[]},{"name":"package_info","dependencies":[]},{"name":"path_provider","dependencies":[]},{"name":"permission_handler","dependencies":[]},{"name":"photo_manager","dependencies":[]},{"name":"receive_sharing_intent","dependencies":[]},{"name":"share","dependencies":[]},{"name":"shared_preferences","dependencies":["shared_preferences_macos","shared_preferences_web"]},{"name":"shared_preferences_macos","dependencies":[]},{"name":"shared_preferences_web","dependencies":[]},{"name":"sqflite","dependencies":[]},{"name":"url_launcher","dependencies":[]},{"name":"video_player","dependencies":[]},{"name":"video_thumbnail","dependencies":[]},{"name":"wifi_info_plugin","dependencies":[]}]} | |||||
{"_info":"// This is a generated file; do not edit or check into version control.","dependencyGraph":[{"name":"agora_rtc_engine","dependencies":[]},{"name":"amap_location","dependencies":[]},{"name":"android_intent","dependencies":[]},{"name":"app_installer","dependencies":[]},{"name":"apple_sign_in","dependencies":[]},{"name":"audioplayer","dependencies":[]},{"name":"auto_orientation","dependencies":[]},{"name":"city_pickers","dependencies":[]},{"name":"connectivity","dependencies":[]},{"name":"easy_contact_picker","dependencies":[]},{"name":"file_picker","dependencies":[]},{"name":"flutter_app_badger","dependencies":[]},{"name":"flutter_audio_recorder","dependencies":[]},{"name":"flutter_bugly","dependencies":[]},{"name":"flutter_facebook_login","dependencies":[]},{"name":"flutter_ijkplayer","dependencies":[]},{"name":"flutter_inapp_purchase","dependencies":[]},{"name":"flutter_local_notifications","dependencies":[]},{"name":"flutter_native_image","dependencies":[]},{"name":"flutter_plugin_android_lifecycle","dependencies":[]},{"name":"flutter_qr_reader","dependencies":["image_picker"]},{"name":"flutter_webview_plugin","dependencies":[]},{"name":"fluwx_no_pay","dependencies":[]},{"name":"geolocator","dependencies":["google_api_availability","location_permissions"]},{"name":"google_api_availability","dependencies":[]},{"name":"google_maps_flutter","dependencies":[]},{"name":"image_cropper","dependencies":[]},{"name":"image_gallery_saver","dependencies":[]},{"name":"image_picker","dependencies":["flutter_plugin_android_lifecycle"]},{"name":"jpush_flutter","dependencies":[]},{"name":"keyboard_utils","dependencies":[]},{"name":"location","dependencies":[]},{"name":"location_permissions","dependencies":[]},{"name":"open_file","dependencies":[]},{"name":"package_info","dependencies":[]},{"name":"path_provider","dependencies":[]},{"name":"permission_handler","dependencies":[]},{"name":"photo_manager","dependencies":[]},{"name":"receive_sharing_intent","dependencies":[]},{"name":"share","dependencies":[]},{"name":"share_extend","dependencies":[]},{"name":"shared_preferences","dependencies":["shared_preferences_macos","shared_preferences_web"]},{"name":"shared_preferences_macos","dependencies":[]},{"name":"shared_preferences_web","dependencies":[]},{"name":"sqflite","dependencies":[]},{"name":"url_launcher","dependencies":[]},{"name":"video_player","dependencies":[]},{"name":"video_thumbnail","dependencies":[]},{"name":"wifi_info_plugin","dependencies":[]}]} |
@@ -26,6 +26,7 @@ import 'package:chat/utils/HttpUtil.dart'; | |||||
import 'package:chat/utils/MessageMgr.dart'; | import 'package:chat/utils/MessageMgr.dart'; | ||||
import 'package:chat/utils/app_navigator.dart'; | import 'package:chat/utils/app_navigator.dart'; | ||||
import 'package:chat/utils/date_utils.dart'; | import 'package:chat/utils/date_utils.dart'; | ||||
import 'package:chat/utils/file_cache_mgr.dart'; | |||||
import 'package:chat/utils/msgHandler.dart'; | import 'package:chat/utils/msgHandler.dart'; | ||||
import 'package:chat/utils/screen.dart'; | import 'package:chat/utils/screen.dart'; | ||||
import 'package:chat/utils/sound_util.dart'; | import 'package:chat/utils/sound_util.dart'; | ||||
@@ -38,6 +39,8 @@ import 'package:flutter/cupertino.dart'; | |||||
import 'package:flutter/material.dart'; | import 'package:flutter/material.dart'; | ||||
import 'package:oktoast/oktoast.dart'; | import 'package:oktoast/oktoast.dart'; | ||||
import 'package:provider/provider.dart'; | import 'package:provider/provider.dart'; | ||||
import 'package:share_extend/share_extend.dart'; | |||||
import 'package:url_launcher/url_launcher.dart'; | |||||
import '../r.dart'; | import '../r.dart'; | ||||
import 'full_img_view.dart'; | import 'full_img_view.dart'; | ||||
@@ -253,6 +256,8 @@ class _ChatPageItemState extends State<ChatPageItem> | |||||
} else { | } else { | ||||
///todo 翻译管家系统通知消息 | ///todo 翻译管家系统通知消息 | ||||
if (type == ChatType.GroupChatNoticeType.value) { | if (type == ChatType.GroupChatNoticeType.value) { | ||||
var res = GroupChatNotice.fromBuffer(widget.msg.msgContent); | var res = GroupChatNotice.fromBuffer(widget.msg.msgContent); | ||||
@@ -288,14 +293,17 @@ class _ChatPageItemState extends State<ChatPageItem> | |||||
_textMsg(List<int> msgContent) { | _textMsg(List<int> msgContent) { | ||||
var msg = utf8.decode(msgContent); | var msg = utf8.decode(msgContent); | ||||
bool isUrl =false; | |||||
if(textList[curTextType].contains('http') ){ | |||||
isUrl =true; | |||||
} | |||||
Widget text = Container( | Widget text = Container( | ||||
constraints: BoxConstraints(maxWidth: Screen.width - 120), | constraints: BoxConstraints(maxWidth: Screen.width - 120), | ||||
child: extendedText( | child: extendedText( | ||||
msg, | msg, | ||||
hideKeyboard: widget.hideKeyboard, | hideKeyboard: widget.hideKeyboard, | ||||
fontSize: FontSize, | fontSize: FontSize, | ||||
color: Colors.black, | |||||
color: isUrl?Colors.blue:Colors.black, | |||||
), | ), | ||||
padding: EdgeInsets.symmetric(horizontal: 9, vertical: 10.5), | padding: EdgeInsets.symmetric(horizontal: 9, vertical: 10.5), | ||||
decoration: BoxDecoration( | decoration: BoxDecoration( | ||||
@@ -619,23 +627,47 @@ class _ChatPageItemState extends State<ChatPageItem> | |||||
Widget wrapItemWithMenu(item) { | Widget wrapItemWithMenu(item) { | ||||
List<Function> actionsFunc = []; | List<Function> actionsFunc = []; | ||||
List<String> actions = [ | List<String> actions = [ | ||||
I18n.of(context).forward, | |||||
I18n.of(context).reply, | |||||
I18n.of(context).delete, | I18n.of(context).delete, | ||||
I18n.of(context).reply, | |||||
I18n.of(context).forward | |||||
]; | ]; | ||||
actionsFunc.add(() { | actionsFunc.add(() { | ||||
print('转发消息'); | |||||
AppNavigator.pushForwardPage(context, widget.msg); | |||||
MessageMgr().emit('Delete Select Message', widget.msg); | |||||
}); | }); | ||||
actionsFunc.add(() { | actionsFunc.add(() { | ||||
print('发送引用的消息'); | print('发送引用的消息'); | ||||
MessageMgr().emit('Reply Select Message', widget.msg); | MessageMgr().emit('Reply Select Message', widget.msg); | ||||
}); | }); | ||||
actionsFunc.add(() { | actionsFunc.add(() { | ||||
MessageMgr().emit('Delete Select Message', widget.msg); | |||||
print('转发消息'); | |||||
AppNavigator.pushForwardPage(context, widget.msg); | |||||
}); | }); | ||||
if (widget.msg.msgType == ChatType.FileChatType.value &&widget.msg.localFile!=null) { | |||||
//分享文件 | |||||
actions.add(I18n.of(context).copy_download_url); | |||||
actionsFunc.add(() async{ | |||||
UploadUtil().copyFileUrl(widget.msg, context); | |||||
String path = widget.msg.localFile; | |||||
String type='file'; | |||||
if(path.contains('mp4') ||path.contains('mp3')){ | |||||
type = 'video'; | |||||
}else if(path.contains('png')||path.contains('jpg')||path.contains('jpeg')||path.contains('JPG')||path.contains('PNG')){ | |||||
type = 'image'; | |||||
} | |||||
ShareExtend.share(FileCacheMgr.replacePath(path), type); | |||||
}); | |||||
} | |||||
if (widget.msg.msgType == ChatType.TextChatType.value) { | if (widget.msg.msgType == ChatType.TextChatType.value) { | ||||
actions.insert(0, I18n.of(context).copy); | actions.insert(0, I18n.of(context).copy); | ||||
actionsFunc.insert(0, () { | actionsFunc.insert(0, () { | ||||
@@ -647,14 +679,6 @@ class _ChatPageItemState extends State<ChatPageItem> | |||||
}); | }); | ||||
} | } | ||||
//如果是文件增加复制下载地址 | |||||
if (widget.msg.msgType == ChatType.FileChatType.value) { | |||||
actions.insert(0, I18n.of(context).copy_download_url); | |||||
actionsFunc.insert(0, () { | |||||
UploadUtil().copyFileUrl(widget.msg, context); | |||||
}); | |||||
} | |||||
if (widget.msg.msgType == ChatType.ShortVoiceChatType.value) { | if (widget.msg.msgType == ChatType.ShortVoiceChatType.value) { | ||||
var soundPlayMode = | var soundPlayMode = | ||||
Provider.of<KeyboardIndexProvider>(context).soundPlayMode; | Provider.of<KeyboardIndexProvider>(context).soundPlayMode; | ||||
@@ -669,9 +693,23 @@ class _ChatPageItemState extends State<ChatPageItem> | |||||
}); | }); | ||||
} | } | ||||
// String date2 = DateTime.fromMillisecondsSinceEpoch(widget.msg.time).toString(); | // String date2 = DateTime.fromMillisecondsSinceEpoch(widget.msg.time).toString(); | ||||
return WPopupMenu( | |||||
bool isUrl =false; | |||||
if(widget.msg.msgType==ChatType.TextChatType.value ){ | |||||
if( textList[curTextType].contains('http')){ | |||||
isUrl =true; | |||||
} | |||||
} | |||||
return WPopupMenu( | |||||
child: item, | child: item, | ||||
actions: actions, | actions: actions, | ||||
onTap: ()async{ | |||||
if(isUrl){ | |||||
if (await canLaunch(textList[curTextType])) { | |||||
launch(textList[curTextType]); | |||||
} | |||||
} | |||||
}, | |||||
onLongPressStart: () { | onLongPressStart: () { | ||||
isLongPressed = true; | isLongPressed = true; | ||||
setState(() {}); | setState(() {}); | ||||
@@ -733,13 +771,19 @@ class _ChatPageItemState extends State<ChatPageItem> | |||||
_receiveText(MsgModel msg) { | _receiveText(MsgModel msg) { | ||||
List<Widget> showMsg = []; | List<Widget> showMsg = []; | ||||
if (textList.length > 0) { | if (textList.length > 0) { | ||||
bool isUrl =false; | |||||
if(textList[curTextType].contains('http') ){ | |||||
isUrl =true; | |||||
} | |||||
showMsg.add(Container( | showMsg.add(Container( | ||||
constraints: | constraints: | ||||
BoxConstraints(maxWidth: Screen.width - 140, minHeight: 24), | BoxConstraints(maxWidth: Screen.width - 140, minHeight: 24), | ||||
alignment: Alignment.centerLeft, | alignment: Alignment.centerLeft, | ||||
child: extendedText( | child: extendedText( | ||||
textList[curTextType], | textList[curTextType], | ||||
color: Constants.BlackTextColor, | |||||
color: isUrl?Colors.blue:Constants.BlackTextColor, | |||||
hideKeyboard: widget.hideKeyboard, | hideKeyboard: widget.hideKeyboard, | ||||
fontSize: FontSize, | fontSize: FontSize, | ||||
))); | ))); | ||||
@@ -836,17 +880,14 @@ class _ChatPageItemState extends State<ChatPageItem> | |||||
if (transTag == 1) { | if (transTag == 1) { | ||||
//机器翻译中 | //机器翻译中 | ||||
userTranslateWidget = | |||||
_translateItemWidget(0xe670, I18n.of(context).man_retranslate, null); | |||||
userTranslateWidget = _translateItemWidget(0xe670, I18n.of(context).man_retranslate, null); | |||||
machineTranslateWidget = | machineTranslateWidget = | ||||
_translateItemWidget(0xe671, I18n.of(context).robotTranslate, null); | _translateItemWidget(0xe671, I18n.of(context).robotTranslate, null); | ||||
} else if (transTag == 2) { | } else if (transTag == 2) { | ||||
//人工翻译中 | //人工翻译中 | ||||
userTranslateWidget = | |||||
_translateItemWidget(0xe670, I18n.of(context).ManTranslate, null); | |||||
machineTranslateWidget = | |||||
_translateItemWidget(0xe671, I18n.of(context).robot_retranslate, () { | |||||
userTranslateWidget = _translateItemWidget(0xe670, I18n.of(context).ManTranslate, null); | |||||
machineTranslateWidget = _translateItemWidget(0xe671, I18n.of(context).robot_retranslate, () { | |||||
setState(() { | setState(() { | ||||
curTextType += 1; | curTextType += 1; | ||||
curTextType %= textList.length; | curTextType %= textList.length; | ||||
@@ -898,8 +939,7 @@ class _ChatPageItemState extends State<ChatPageItem> | |||||
}); | }); | ||||
} | } | ||||
}); | }); | ||||
machineTranslateWidget = | |||||
_translateItemWidget(0xe671, I18n.of(context).robot_retranslate, () { | |||||
machineTranslateWidget = _translateItemWidget(0xe671, I18n.of(context).robot_retranslate, () { | |||||
setState(() { | setState(() { | ||||
curTextType += 1; | curTextType += 1; | ||||
curTextType %= textList.length; | curTextType %= textList.length; | ||||
@@ -954,8 +994,7 @@ class _ChatPageItemState extends State<ChatPageItem> | |||||
)) | )) | ||||
], | ], | ||||
))); | ))); | ||||
machineTranslateWidget = | |||||
_translateItemWidget(0xe675, I18n.of(context).see_original, () { | |||||
machineTranslateWidget = _translateItemWidget(0xe675, I18n.of(context).see_original, () { | |||||
setState(() { | setState(() { | ||||
curTextType = textList.length - 1; | curTextType = textList.length - 1; | ||||
}); | }); | ||||
@@ -1,4 +1,5 @@ | |||||
import 'dart:convert'; | import 'dart:convert'; | ||||
import 'dart:io'; | |||||
import 'dart:math'; | import 'dart:math'; | ||||
import 'dart:typed_data'; | import 'dart:typed_data'; | ||||
@@ -35,11 +36,15 @@ import 'package:chat/utils/video_anim.dart'; | |||||
import 'package:dio/dio.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:path_provider/path_provider.dart'; | |||||
import 'package:provider/provider.dart'; | import 'package:provider/provider.dart'; | ||||
import 'package:oktoast/oktoast.dart'; | import 'package:oktoast/oktoast.dart'; | ||||
import 'package:chat/utils/HttpUtil.dart'; | import 'package:chat/utils/HttpUtil.dart'; | ||||
import 'package:share_extend/share_extend.dart'; | |||||
import 'package:url_launcher/url_launcher.dart'; | |||||
import '../r.dart'; | import '../r.dart'; | ||||
import '../utils/file_cache_mgr.dart'; | |||||
import 'full_img_view.dart'; | import 'full_img_view.dart'; | ||||
import 'upload_item.dart'; | import 'upload_item.dart'; | ||||
import 'package:chat/models/ref_name_provider.dart'; | import 'package:chat/models/ref_name_provider.dart'; | ||||
@@ -279,13 +284,17 @@ class _GroupChatPageItemState extends State<GroupChatPageItem> | |||||
if (msg.contains(' ]')) { | if (msg.contains(' ]')) { | ||||
msg = msg.replaceAll(' ]', ']'); | msg = msg.replaceAll(' ]', ']'); | ||||
} | } | ||||
bool isUrl =false; | |||||
if(textList[curTextType].contains('http') ){ | |||||
isUrl =true; | |||||
} | |||||
Widget text = Container( | Widget text = Container( | ||||
constraints: BoxConstraints(maxWidth: Screen.width - 120), | constraints: BoxConstraints(maxWidth: Screen.width - 120), | ||||
child: extendedText( | child: extendedText( | ||||
msg, | msg, | ||||
hideKeyboard: widget.hideKeyboard, | hideKeyboard: widget.hideKeyboard, | ||||
fontSize: FontSize, | fontSize: FontSize, | ||||
color: SendMsgText, | |||||
color: isUrl?Colors.blue:SendMsgText, | |||||
), | ), | ||||
padding: EdgeInsets.symmetric(horizontal: 9, vertical: 10.5), | padding: EdgeInsets.symmetric(horizontal: 9, vertical: 10.5), | ||||
decoration: BoxDecoration( | decoration: BoxDecoration( | ||||
@@ -581,6 +590,31 @@ class _GroupChatPageItemState extends State<GroupChatPageItem> | |||||
MessageMgr().emit('Delete Select Message', widget.msg); | MessageMgr().emit('Delete Select Message', widget.msg); | ||||
}); | }); | ||||
if (widget.msg.msgType == ChatType.FileChatType.value &&widget.msg.localFile!=null) { | |||||
//分享文件 | |||||
actions.add( I18n.of(context).copy_download_url); | |||||
actionsFunc.add(() async{ | |||||
//如果是文件增加复制下载地址 | |||||
String path = widget.msg.localFile; | |||||
UploadUtil().copyFileUrl(widget.msg, context); | |||||
String type='file'; | |||||
if(path.contains('mp4') ||path.contains('mp3')){ | |||||
type = 'video'; | |||||
}else if(path.contains('png')||path.contains('jpg')||path.contains('jpeg')||path.contains('JPG')||path.contains('PNG')){ | |||||
type = 'image'; | |||||
} | |||||
ShareExtend.share(FileCacheMgr.replacePath(path), type); | |||||
}); | |||||
} | |||||
if (widget.msg.msgType == ChatType.TextChatType.value) { | if (widget.msg.msgType == ChatType.TextChatType.value) { | ||||
actions.insert(0, I18n.of(context).copy); | actions.insert(0, I18n.of(context).copy); | ||||
actionsFunc.insert(0, () { | actionsFunc.insert(0, () { | ||||
@@ -592,13 +626,7 @@ class _GroupChatPageItemState extends State<GroupChatPageItem> | |||||
}); | }); | ||||
} | } | ||||
//如果是文件增加复制下载地址 | |||||
if (widget.msg.msgType == ChatType.FileChatType.value) { | |||||
actions.insert(0, I18n.of(context).copy_download_url); | |||||
actionsFunc.insert(0, () { | |||||
UploadUtil().copyFileUrl(widget.msg, context); | |||||
}); | |||||
} | |||||
if (widget.msg.msgType == ChatType.ShortVoiceChatType.value) { | if (widget.msg.msgType == ChatType.ShortVoiceChatType.value) { | ||||
var soundPlayMode = | var soundPlayMode = | ||||
@@ -615,9 +643,24 @@ class _GroupChatPageItemState extends State<GroupChatPageItem> | |||||
} | } | ||||
// String date2 = DateTime.fromMillisecondsSinceEpoch(widget.msg.time).toString(); | // String date2 = DateTime.fromMillisecondsSinceEpoch(widget.msg.time).toString(); | ||||
bool isUrl =false; | |||||
if(widget.msg.msgType==ChatType.TextChatType.value ){ | |||||
if( textList[curTextType].contains('http')){ | |||||
isUrl =true; | |||||
} | |||||
} | |||||
return WPopupMenu( | return WPopupMenu( | ||||
child: item, | child: item, | ||||
actions: actions, | actions: actions, | ||||
onTap: ()async{ | |||||
if(isUrl){ | |||||
if (await canLaunch(textList[curTextType])) { | |||||
launch(textList[curTextType]); | |||||
} | |||||
} | |||||
}, | |||||
onLongPressStart: () { | onLongPressStart: () { | ||||
isLongPressed = true; | isLongPressed = true; | ||||
setState(() {}); | setState(() {}); | ||||
@@ -718,13 +761,21 @@ class _GroupChatPageItemState extends State<GroupChatPageItem> | |||||
_receiveText(MsgModel msg) { | _receiveText(MsgModel msg) { | ||||
List<Widget> showMsg = []; | List<Widget> showMsg = []; | ||||
if (textList.length > 0) { | if (textList.length > 0) { | ||||
bool isUrl =false; | |||||
if(textList[curTextType].contains('http') ){ | |||||
isUrl =true; | |||||
} | |||||
showMsg.add(Container( | showMsg.add(Container( | ||||
constraints: | constraints: | ||||
BoxConstraints(maxWidth: Screen.width - 140, minHeight: 22), | BoxConstraints(maxWidth: Screen.width - 140, minHeight: 22), | ||||
alignment: Alignment.centerLeft, | alignment: Alignment.centerLeft, | ||||
child: extendedText( | child: extendedText( | ||||
textList[curTextType], | textList[curTextType], | ||||
color: Constants.BlackTextColor, | |||||
color: isUrl?Colors.blue:Constants.BlackTextColor, | |||||
hideKeyboard: widget.hideKeyboard, | hideKeyboard: widget.hideKeyboard, | ||||
fontSize: FontSize, | fontSize: FontSize, | ||||
))); | ))); | ||||
@@ -233,10 +233,10 @@ class InputBarState extends State<InputBar> | |||||
bool isGroup = Provider.of<bool>(context); | bool isGroup = Provider.of<bool>(context); | ||||
Widget centerWidget; | Widget centerWidget; | ||||
Widget input = Container( | Widget input = Container( | ||||
child: ExtendedTextField( | |||||
textSelectionControls: MyExtendedMaterialTextSelectionControls(), | |||||
child: | |||||
TextField( | |||||
// textSelectionControls: ExtendedMaterialTextSelectionControls(), | |||||
keyboardAppearance: Brightness.light, | keyboardAppearance: Brightness.light, | ||||
onChanged: (String messageText) { | onChanged: (String messageText) { | ||||
if (_textCtrl.text.length > 0) { | if (_textCtrl.text.length > 0) { | ||||
@@ -262,9 +262,9 @@ class InputBarState extends State<InputBar> | |||||
textBaseline: TextBaseline.alphabetic), | textBaseline: TextBaseline.alphabetic), | ||||
maxLines: 3, | maxLines: 3, | ||||
minLines: 1, | minLines: 1, | ||||
specialTextSpanBuilder: MySpecialTextSpanBuilder( | |||||
showAtBackground: true, | |||||
), | |||||
// specialTextSpanBuilder: MySpecialTextSpanBuilder( | |||||
// showAtBackground: true, | |||||
// ), | |||||
controller: _textCtrl, | controller: _textCtrl, | ||||
textInputAction: TextInputAction.newline, | textInputAction: TextInputAction.newline, | ||||
inputFormatters: <TextInputFormatter>[ | inputFormatters: <TextInputFormatter>[ | ||||
@@ -313,79 +313,22 @@ class _HomeMainState extends State<HomeMain> { | |||||
I18n.of(context).me | I18n.of(context).me | ||||
]; | ]; | ||||
_navigationViews = [ | |||||
NavigationIconView( | |||||
title: _titles[2], | |||||
icon: IconData( | |||||
0xe67c, | |||||
fontFamily: 'iconfont', | |||||
), | |||||
isShowdot: true, | |||||
iconSize: 29), | |||||
NavigationIconView( | |||||
title: _titles[0], | |||||
isShowdot: true, | |||||
iconMargin: EdgeInsets.only(top: 2), | |||||
type: 5, | |||||
icon: IconData( | |||||
0xe66e, | |||||
fontFamily: 'iconfont', | |||||
), | |||||
iconSize: 26.5), | |||||
NavigationIconView( | |||||
title: _titles[1], | |||||
icon: IconData( | |||||
0xe656, | |||||
fontFamily: 'iconfont', | |||||
), | |||||
isCenter: true, | |||||
iconSize: 31), | |||||
NavigationIconView( | |||||
title: _titles[1], | |||||
isShowdot: true, | |||||
icon: IconData( | |||||
0xe60b, | |||||
fontFamily: 'iconfont', | |||||
), | |||||
type: 6, | |||||
iconSize: 26.5), | |||||
NavigationIconView( | |||||
title: _titles[3], | |||||
icon: IconData( | |||||
0xe67b, | |||||
fontFamily: 'iconfont', | |||||
), | |||||
iconSize: 26.5), | |||||
]; | |||||
_pages = [ | |||||
RealTimeHelperPage(), | |||||
FriendPage(), | |||||
FindPage(), | |||||
ConversActionPage(), | |||||
// GroupChatListPage(), | |||||
ProfilePage( | |||||
userId: UserData().basicInfo.userId, | |||||
), | |||||
]; | |||||
// _navigationViews = [ | // _navigationViews = [ | ||||
// NavigationIconView( | // NavigationIconView( | ||||
// title: _titles[1], | |||||
// isShowdot: true, | |||||
// title: _titles[2], | |||||
// icon: IconData( | // icon: IconData( | ||||
// 0xe60b, | |||||
// 0xe67c, | |||||
// fontFamily: 'iconfont', | // fontFamily: 'iconfont', | ||||
// ), | // ), | ||||
// type: 1, | |||||
// iconSize: 26.5), | |||||
// isShowdot: true, | |||||
// iconSize: 29), | |||||
// NavigationIconView( | // NavigationIconView( | ||||
// title: _titles[0], | // title: _titles[0], | ||||
// isShowdot: true, | // isShowdot: true, | ||||
// iconMargin: EdgeInsets.only(top: 2), | // iconMargin: EdgeInsets.only(top: 2), | ||||
// type: 5, | // type: 5, | ||||
// icon: IconData( | // icon: IconData( | ||||
// 0xe663, | |||||
// 0xe66e, | |||||
// fontFamily: 'iconfont', | // fontFamily: 'iconfont', | ||||
// ), | // ), | ||||
// iconSize: 26.5), | // iconSize: 26.5), | ||||
@@ -397,17 +340,15 @@ class _HomeMainState extends State<HomeMain> { | |||||
// ), | // ), | ||||
// isCenter: true, | // isCenter: true, | ||||
// iconSize: 31), | // iconSize: 31), | ||||
// | |||||
// NavigationIconView( | // NavigationIconView( | ||||
// title: _titles[3], | |||||
// title: _titles[1], | |||||
// isShowdot: true, | // isShowdot: true, | ||||
// icon: IconData( | // icon: IconData( | ||||
// 0xe66e, | |||||
// 0xe60b, | |||||
// fontFamily: 'iconfont', | // fontFamily: 'iconfont', | ||||
// ), | // ), | ||||
// type: 4, | |||||
// type: 6, | |||||
// iconSize: 26.5), | // iconSize: 26.5), | ||||
// | |||||
// NavigationIconView( | // NavigationIconView( | ||||
// title: _titles[3], | // title: _titles[3], | ||||
// icon: IconData( | // icon: IconData( | ||||
@@ -418,17 +359,76 @@ class _HomeMainState extends State<HomeMain> { | |||||
// ]; | // ]; | ||||
// | // | ||||
// _pages = [ | // _pages = [ | ||||
// ConversActionPage(), | |||||
//// RealTimeHelperPage(), | |||||
// RealTimeHelperPage(), | |||||
// FriendPage(), | // FriendPage(), | ||||
// FindPage(), | // FindPage(), | ||||
//// ConversActionPage(), | |||||
// GroupChatListPage(), | |||||
// ConversActionPage(), | |||||
//// GroupChatListPage(), | |||||
// ProfilePage( | // ProfilePage( | ||||
// userId: UserData().basicInfo.userId, | // userId: UserData().basicInfo.userId, | ||||
// ), | // ), | ||||
// ]; | // ]; | ||||
_navigationViews = [ | |||||
NavigationIconView( | |||||
title: _titles[1], | |||||
isShowdot: true, | |||||
icon: IconData( | |||||
0xe60b, | |||||
fontFamily: 'iconfont', | |||||
), | |||||
type: 1, | |||||
iconSize: 26.5), | |||||
NavigationIconView( | |||||
title: _titles[0], | |||||
isShowdot: true, | |||||
iconMargin: EdgeInsets.only(top: 2), | |||||
type: 5, | |||||
icon: IconData( | |||||
0xe663, | |||||
fontFamily: 'iconfont', | |||||
), | |||||
iconSize: 26.5), | |||||
NavigationIconView( | |||||
title: _titles[1], | |||||
icon: IconData( | |||||
0xe656, | |||||
fontFamily: 'iconfont', | |||||
), | |||||
isCenter: true, | |||||
iconSize: 31), | |||||
NavigationIconView( | |||||
title: _titles[3], | |||||
isShowdot: true, | |||||
icon: IconData( | |||||
0xe66e, | |||||
fontFamily: 'iconfont', | |||||
), | |||||
type: 4, | |||||
iconSize: 26.5), | |||||
NavigationIconView( | |||||
title: _titles[3], | |||||
icon: IconData( | |||||
0xe67b, | |||||
fontFamily: 'iconfont', | |||||
), | |||||
iconSize: 26.5), | |||||
]; | |||||
_pages = [ | |||||
ConversActionPage(), | |||||
// RealTimeHelperPage(), | |||||
FriendPage(), | |||||
FindPage(), | |||||
// ConversActionPage(), | |||||
GroupChatListPage(), | |||||
ProfilePage( | |||||
userId: UserData().basicInfo.userId, | |||||
), | |||||
]; | |||||
} | } | ||||
@@ -144,6 +144,7 @@ Map<String, int> language = { | |||||
'zh_Hans_US': LanguageType.SimplifiedChinese, | 'zh_Hans_US': LanguageType.SimplifiedChinese, | ||||
'zh_Hans_MO': LanguageType.SimplifiedChinese, | 'zh_Hans_MO': LanguageType.SimplifiedChinese, | ||||
'zh_Hans_SG': LanguageType.SimplifiedChinese, | 'zh_Hans_SG': LanguageType.SimplifiedChinese, | ||||
'zh_Hans_VN': LanguageType.SimplifiedChinese, | |||||
'zh_CN': LanguageType.SimplifiedChinese, | 'zh_CN': LanguageType.SimplifiedChinese, | ||||
'ko_KR': LanguageType.Korean, | 'ko_KR': LanguageType.Korean, | ||||
@@ -44,9 +44,9 @@ class HttpUtil { | |||||
//static const String BaseUrl = 'http://192.168.0.223:7001/'; | //static const String BaseUrl = 'http://192.168.0.223:7001/'; | ||||
//static const String BaseUrl = 'http://192.168.0.207:9080/'; | //static const String BaseUrl = 'http://192.168.0.207:9080/'; | ||||
static const String BaseUrl = 'http://120.79.107.63:9080/'; | |||||
// static const String BaseUrl = 'http://120.79.107.63:9080/'; | |||||
//static const String BaseUrl = 'http://192.168.0.177:9016/'; | //static const String BaseUrl = 'http://192.168.0.177:9016/'; | ||||
// static const String BaseUrl = 'https://datasm.chengyouhd.com/'; | |||||
static const String BaseUrl = 'https://datasm.chengyouhd.com/'; | |||||
static HttpUtil _getInstance() { | static HttpUtil _getInstance() { | ||||
if (_instance == null) { | if (_instance == null) { | ||||
@@ -68,7 +68,7 @@ extendedText(String text, | |||||
double emojisize = 20.0, | double emojisize = 20.0, | ||||
Function hideKeyboard, | Function hideKeyboard, | ||||
fontWeight,int maxLines, | fontWeight,int maxLines, | ||||
Function onSpecialTextTap | |||||
Function onSpecialTextTap, | |||||
}) { | }) { | ||||
return ExtendedText( | return ExtendedText( | ||||
text, | text, | ||||
@@ -16,6 +16,7 @@ class WPopupMenu extends StatefulWidget { | |||||
this.menuHeight = 38, | this.menuHeight = 38, | ||||
this.onLongPressStart, | this.onLongPressStart, | ||||
this.onLongPressEnd, | this.onLongPressEnd, | ||||
this.onTap | |||||
}); | }); | ||||
final ValueChanged<int> onValueChanged; | final ValueChanged<int> onValueChanged; | ||||
@@ -28,6 +29,7 @@ class WPopupMenu extends StatefulWidget { | |||||
final double menuHeight; | final double menuHeight; | ||||
final Function onLongPressStart; | final Function onLongPressStart; | ||||
final Function onLongPressEnd; | final Function onLongPressEnd; | ||||
final Function onTap; | |||||
@override | @override | ||||
_WPopupMenuState createState() => _WPopupMenuState(); | _WPopupMenuState createState() => _WPopupMenuState(); | ||||
@@ -60,6 +62,10 @@ class _WPopupMenuState extends State<WPopupMenu> { | |||||
return GestureDetector( | return GestureDetector( | ||||
child: widget.child, | child: widget.child, | ||||
onTap: () { | onTap: () { | ||||
if(widget.onTap!=null){ | |||||
widget.onTap(); | |||||
} | |||||
if (widget.pressType == PressType.singleClick) { | if (widget.pressType == PressType.singleClick) { | ||||
onTap(); | onTap(); | ||||
} | } | ||||
@@ -916,6 +916,13 @@ packages: | |||||
url: "https://pub.flutter-io.cn" | url: "https://pub.flutter-io.cn" | ||||
source: hosted | source: hosted | ||||
version: "0.6.3+4" | version: "0.6.3+4" | ||||
share_extend: | |||||
dependency: "direct main" | |||||
description: | |||||
name: share_extend | |||||
url: "https://pub.flutter-io.cn" | |||||
source: hosted | |||||
version: "1.1.1" | |||||
shared_preferences: | shared_preferences: | ||||
dependency: "direct main" | dependency: "direct main" | ||||
description: | description: | ||||
@@ -47,7 +47,7 @@ dependencies: | |||||
permission_handler: ^4.0.0 | permission_handler: ^4.0.0 | ||||
location_permissions: ^2.0.3 | location_permissions: ^2.0.3 | ||||
# audioplayer: ^0.5.2 | |||||
# audioplayer: ^0.5.2 | |||||
audioplayer: | audioplayer: | ||||
git: https://github.com/randomjoho/audioplayer.git | git: https://github.com/randomjoho/audioplayer.git | ||||
@@ -156,7 +156,7 @@ dependencies: | |||||
lpinyin: ^1.0.7 | lpinyin: ^1.0.7 | ||||
#网页-支付跳转 | #网页-支付跳转 | ||||
flutter_webview_plugin: ^0.3.10+1 | |||||
flutter_webview_plugin: ^0.3.10 | |||||
# firebase_auth: ^0.15.3 | # firebase_auth: ^0.15.3 | ||||
#图片保存 | #图片保存 | ||||
@@ -174,6 +174,7 @@ dependencies: | |||||
#文件打开 | #文件打开 | ||||
open_file: ^3.0.1 | open_file: ^3.0.1 | ||||
share_extend: ^1.1.1 | |||||
dev_dependencies: | dev_dependencies: | ||||