ZCM před 5 roky
rodič
revize
e2214f5829
12 změnil soubory, kde provedl 1293 přidání a 1188 odebrání
  1. +1
    -1
      .flutter-plugins-dependencies
  2. +66
    -27
      lib/chat/ChatPageItem.dart
  3. +60
    -9
      lib/chat/group_chat_item.dart
  4. +6
    -6
      lib/chat/input_bar.dart
  5. +1069
    -1069
      lib/home/ConversActionPage.dart
  6. +71
    -71
      lib/home/homeMain.dart
  7. +1
    -0
      lib/main.dart
  8. +2
    -2
      lib/utils/HttpUtil.dart
  9. +1
    -1
      lib/utils/screen.dart
  10. +6
    -0
      lib/utils/wpop/w_popup_menu.dart
  11. +7
    -0
      pubspec.lock
  12. +3
    -2
      pubspec.yaml

+ 1
- 1
.flutter-plugins-dependencies Zobrazit soubor

@@ -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":[]}]}

+ 66
- 27
lib/chat/ChatPageItem.dart Zobrazit soubor

@@ -26,6 +26,7 @@ import 'package:chat/utils/HttpUtil.dart';
import 'package:chat/utils/MessageMgr.dart';
import 'package:chat/utils/app_navigator.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/screen.dart';
import 'package:chat/utils/sound_util.dart';
@@ -38,6 +39,8 @@ import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:oktoast/oktoast.dart';
import 'package:provider/provider.dart';
import 'package:share_extend/share_extend.dart';
import 'package:url_launcher/url_launcher.dart';
import '../r.dart';
import 'full_img_view.dart';
@@ -253,6 +256,8 @@ class _ChatPageItemState extends State<ChatPageItem>
} else {
///todo 翻译管家系统通知消息
if (type == ChatType.GroupChatNoticeType.value) {
var res = GroupChatNotice.fromBuffer(widget.msg.msgContent);
@@ -288,14 +293,17 @@ class _ChatPageItemState extends State<ChatPageItem>
_textMsg(List<int> msgContent) {
var msg = utf8.decode(msgContent);
bool isUrl =false;
if(textList[curTextType].contains('http') ){
isUrl =true;
}
Widget text = Container(
constraints: BoxConstraints(maxWidth: Screen.width - 120),
child: extendedText(
msg,
hideKeyboard: widget.hideKeyboard,
fontSize: FontSize,
color: Colors.black,
color: isUrl?Colors.blue:Colors.black,
),
padding: EdgeInsets.symmetric(horizontal: 9, vertical: 10.5),
decoration: BoxDecoration(
@@ -619,23 +627,47 @@ class _ChatPageItemState extends State<ChatPageItem>
Widget wrapItemWithMenu(item) {
List<Function> actionsFunc = [];
List<String> actions = [
I18n.of(context).forward,
I18n.of(context).reply,
I18n.of(context).delete,
I18n.of(context).reply,
I18n.of(context).forward
];
actionsFunc.add(() {
print('转发消息');
AppNavigator.pushForwardPage(context, widget.msg);
MessageMgr().emit('Delete Select Message', widget.msg);
});
actionsFunc.add(() {
print('发送引用的消息');
MessageMgr().emit('Reply Select Message', widget.msg);
});
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) {
actions.insert(0, I18n.of(context).copy);
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) {
var soundPlayMode =
Provider.of<KeyboardIndexProvider>(context).soundPlayMode;
@@ -669,9 +693,23 @@ class _ChatPageItemState extends State<ChatPageItem>
});
}
// 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,
actions: actions,
onTap: ()async{
if(isUrl){
if (await canLaunch(textList[curTextType])) {
launch(textList[curTextType]);
}
}
},
onLongPressStart: () {
isLongPressed = true;
setState(() {});
@@ -733,13 +771,19 @@ class _ChatPageItemState extends State<ChatPageItem>
_receiveText(MsgModel msg) {
List<Widget> showMsg = [];
if (textList.length > 0) {
bool isUrl =false;
if(textList[curTextType].contains('http') ){
isUrl =true;
}
showMsg.add(Container(
constraints:
BoxConstraints(maxWidth: Screen.width - 140, minHeight: 24),
alignment: Alignment.centerLeft,
child: extendedText(
textList[curTextType],
color: Constants.BlackTextColor,
color: isUrl?Colors.blue:Constants.BlackTextColor,
hideKeyboard: widget.hideKeyboard,
fontSize: FontSize,
)));
@@ -836,17 +880,14 @@ class _ChatPageItemState extends State<ChatPageItem>
if (transTag == 1) {
//机器翻译中
userTranslateWidget =
_translateItemWidget(0xe670, I18n.of(context).man_retranslate, null);
userTranslateWidget = _translateItemWidget(0xe670, I18n.of(context).man_retranslate, null);
machineTranslateWidget =
_translateItemWidget(0xe671, I18n.of(context).robotTranslate, null);
} 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(() {
curTextType += 1;
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(() {
curTextType += 1;
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(() {
curTextType = textList.length - 1;
});


+ 60
- 9
lib/chat/group_chat_item.dart Zobrazit soubor

@@ -1,4 +1,5 @@
import 'dart:convert';
import 'dart:io';
import 'dart:math';
import 'dart:typed_data';
@@ -35,11 +36,15 @@ import 'package:chat/utils/video_anim.dart';
import 'package:dio/dio.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:path_provider/path_provider.dart';
import 'package:provider/provider.dart';
import 'package:oktoast/oktoast.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 '../utils/file_cache_mgr.dart';
import 'full_img_view.dart';
import 'upload_item.dart';
import 'package:chat/models/ref_name_provider.dart';
@@ -279,13 +284,17 @@ class _GroupChatPageItemState extends State<GroupChatPageItem>
if (msg.contains(' ]')) {
msg = msg.replaceAll(' ]', ']');
}
bool isUrl =false;
if(textList[curTextType].contains('http') ){
isUrl =true;
}
Widget text = Container(
constraints: BoxConstraints(maxWidth: Screen.width - 120),
child: extendedText(
msg,
hideKeyboard: widget.hideKeyboard,
fontSize: FontSize,
color: SendMsgText,
color: isUrl?Colors.blue:SendMsgText,
),
padding: EdgeInsets.symmetric(horizontal: 9, vertical: 10.5),
decoration: BoxDecoration(
@@ -581,6 +590,31 @@ class _GroupChatPageItemState extends State<GroupChatPageItem>
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) {
actions.insert(0, I18n.of(context).copy);
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) {
var soundPlayMode =
@@ -615,9 +643,24 @@ class _GroupChatPageItemState extends State<GroupChatPageItem>
}
// 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(
child: item,
actions: actions,
onTap: ()async{
if(isUrl){
if (await canLaunch(textList[curTextType])) {
launch(textList[curTextType]);
}
}
},
onLongPressStart: () {
isLongPressed = true;
setState(() {});
@@ -718,13 +761,21 @@ class _GroupChatPageItemState extends State<GroupChatPageItem>
_receiveText(MsgModel msg) {
List<Widget> showMsg = [];
if (textList.length > 0) {
bool isUrl =false;
if(textList[curTextType].contains('http') ){
isUrl =true;
}
showMsg.add(Container(
constraints:
BoxConstraints(maxWidth: Screen.width - 140, minHeight: 22),
alignment: Alignment.centerLeft,
child: extendedText(
textList[curTextType],
color: Constants.BlackTextColor,
color: isUrl?Colors.blue:Constants.BlackTextColor,
hideKeyboard: widget.hideKeyboard,
fontSize: FontSize,
)));


+ 6
- 6
lib/chat/input_bar.dart Zobrazit soubor

@@ -233,10 +233,10 @@ class InputBarState extends State<InputBar>
bool isGroup = Provider.of<bool>(context);
Widget centerWidget;
Widget input = Container(
child: ExtendedTextField(
textSelectionControls: MyExtendedMaterialTextSelectionControls(),
child:
TextField(
// textSelectionControls: ExtendedMaterialTextSelectionControls(),
keyboardAppearance: Brightness.light,
onChanged: (String messageText) {
if (_textCtrl.text.length > 0) {
@@ -262,9 +262,9 @@ class InputBarState extends State<InputBar>
textBaseline: TextBaseline.alphabetic),
maxLines: 3,
minLines: 1,
specialTextSpanBuilder: MySpecialTextSpanBuilder(
showAtBackground: true,
),
// specialTextSpanBuilder: MySpecialTextSpanBuilder(
// showAtBackground: true,
// ),
controller: _textCtrl,
textInputAction: TextInputAction.newline,
inputFormatters: <TextInputFormatter>[


+ 1069
- 1069
lib/home/ConversActionPage.dart
Diff nebyl zobrazen, protože je příliš veliký
Zobrazit soubor


+ 71
- 71
lib/home/homeMain.dart Zobrazit soubor

@@ -313,79 +313,22 @@ class _HomeMainState extends State<HomeMain> {
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 = [
// NavigationIconView(
// title: _titles[1],
// isShowdot: true,
// title: _titles[2],
// icon: IconData(
// 0xe60b,
// 0xe67c,
// fontFamily: 'iconfont',
// ),
// type: 1,
// iconSize: 26.5),
// isShowdot: true,
// iconSize: 29),
// NavigationIconView(
// title: _titles[0],
// isShowdot: true,
// iconMargin: EdgeInsets.only(top: 2),
// type: 5,
// icon: IconData(
// 0xe663,
// 0xe66e,
// fontFamily: 'iconfont',
// ),
// iconSize: 26.5),
@@ -397,17 +340,15 @@ class _HomeMainState extends State<HomeMain> {
// ),
// isCenter: true,
// iconSize: 31),
//
// NavigationIconView(
// title: _titles[3],
// title: _titles[1],
// isShowdot: true,
// icon: IconData(
// 0xe66e,
// 0xe60b,
// fontFamily: 'iconfont',
// ),
// type: 4,
// type: 6,
// iconSize: 26.5),
//
// NavigationIconView(
// title: _titles[3],
// icon: IconData(
@@ -418,17 +359,76 @@ class _HomeMainState extends State<HomeMain> {
// ];
//
// _pages = [
// ConversActionPage(),
//// RealTimeHelperPage(),
// RealTimeHelperPage(),
// FriendPage(),
// FindPage(),
//// ConversActionPage(),
// GroupChatListPage(),
// ConversActionPage(),
//// GroupChatListPage(),
// ProfilePage(
// 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,
),
];
}


+ 1
- 0
lib/main.dart Zobrazit soubor

@@ -144,6 +144,7 @@ Map<String, int> language = {
'zh_Hans_US': LanguageType.SimplifiedChinese,
'zh_Hans_MO': LanguageType.SimplifiedChinese,
'zh_Hans_SG': LanguageType.SimplifiedChinese,
'zh_Hans_VN': LanguageType.SimplifiedChinese,
'zh_CN': LanguageType.SimplifiedChinese,
'ko_KR': LanguageType.Korean,


+ 2
- 2
lib/utils/HttpUtil.dart Zobrazit soubor

@@ -44,9 +44,9 @@ class HttpUtil {
//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://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 = 'https://datasm.chengyouhd.com/';
static const String BaseUrl = 'https://datasm.chengyouhd.com/';
static HttpUtil _getInstance() {
if (_instance == null) {


+ 1
- 1
lib/utils/screen.dart Zobrazit soubor

@@ -68,7 +68,7 @@ extendedText(String text,
double emojisize = 20.0,
Function hideKeyboard,
fontWeight,int maxLines,
Function onSpecialTextTap
Function onSpecialTextTap,
}) {
return ExtendedText(
text,


+ 6
- 0
lib/utils/wpop/w_popup_menu.dart Zobrazit soubor

@@ -16,6 +16,7 @@ class WPopupMenu extends StatefulWidget {
this.menuHeight = 38,
this.onLongPressStart,
this.onLongPressEnd,
this.onTap
});

final ValueChanged<int> onValueChanged;
@@ -28,6 +29,7 @@ class WPopupMenu extends StatefulWidget {
final double menuHeight;
final Function onLongPressStart;
final Function onLongPressEnd;
final Function onTap;

@override
_WPopupMenuState createState() => _WPopupMenuState();
@@ -60,6 +62,10 @@ class _WPopupMenuState extends State<WPopupMenu> {
return GestureDetector(
child: widget.child,
onTap: () {
if(widget.onTap!=null){
widget.onTap();
}

if (widget.pressType == PressType.singleClick) {
onTap();
}


+ 7
- 0
pubspec.lock Zobrazit soubor

@@ -916,6 +916,13 @@ packages:
url: "https://pub.flutter-io.cn"
source: hosted
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:
dependency: "direct main"
description:


+ 3
- 2
pubspec.yaml Zobrazit soubor

@@ -47,7 +47,7 @@ dependencies:
permission_handler: ^4.0.0

location_permissions: ^2.0.3
# audioplayer: ^0.5.2
# audioplayer: ^0.5.2
audioplayer:
git: https://github.com/randomjoho/audioplayer.git

@@ -156,7 +156,7 @@ dependencies:
lpinyin: ^1.0.7

#网页-支付跳转
flutter_webview_plugin: ^0.3.10+1
flutter_webview_plugin: ^0.3.10
# firebase_auth: ^0.15.3

#图片保存
@@ -174,6 +174,7 @@ dependencies:
#文件打开
open_file: ^3.0.1

share_extend: ^1.1.1


dev_dependencies:


Načítá se…
Zrušit
Uložit