Hibok
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 
 
 
 

220 行
7.1 KiB

  1. import 'package:chat/chat/ChatPage.dart';
  2. import 'package:chat/chat/coin_bag_info.dart';
  3. import 'package:chat/chat/coin_bag_view.dart';
  4. import 'package:chat/chat/company_server_view.dart';
  5. import 'package:chat/chat/group_chat_view.dart';
  6. import 'package:chat/data/constants.dart';
  7. import 'package:chat/generated/i18n.dart';
  8. import 'package:chat/home/InformUser.dart';
  9. import 'package:chat/home/ProfilePage.dart';
  10. import 'package:chat/home/SearchPage.dart';
  11. import 'package:chat/home/audio_chat_view.dart';
  12. import 'package:chat/home/create_group_view.dart';
  13. import 'package:chat/home/group_all_member.dart';
  14. import 'package:chat/home/group_qr_view.dart';
  15. import 'package:chat/home/homeMain.dart';
  16. import 'package:chat/home/qr_scanner_view.dart';
  17. import 'package:chat/home/qr_view.dart';
  18. import 'package:chat/home/service_view.dart';
  19. import 'package:chat/home/translate_robot.dart';
  20. import 'package:chat/home/webview_page.dart';
  21. import 'package:chat/map/location_result.dart';
  22. import 'package:chat/map/map_view.dart';
  23. import 'package:chat/models/ChatMsg.dart';
  24. import 'package:chat/models/UserInfo.dart';
  25. import 'package:chat/models/group_info_model.dart';
  26. import 'package:chat/utils/NetUtil.dart';
  27. import 'package:chat/utils/conversation_table.dart';
  28. import 'package:flutter/material.dart';
  29. import 'package:oktoast/oktoast.dart';
  30. class AppNavigator {
  31. static SlideTransition createTransition(
  32. Animation<double> animation, Widget child) {
  33. return new SlideTransition(
  34. position: new Tween<Offset>(
  35. begin: const Offset(1.0, 0.0),
  36. end: const Offset(0.0, 0.0),
  37. ).animate(animation),
  38. child: child,
  39. );
  40. }
  41. static FadeTransition createFadeTransition(
  42. Animation<double> animation, Widget child) {
  43. return FadeTransition(
  44. opacity: Tween(begin: 1.0, end: 0.0).animate(
  45. CurvedAnimation(parent: animation, curve: Curves.fastOutSlowIn)),
  46. child: child,
  47. );
  48. }
  49. static SlideTransition createUpTransition(
  50. Animation<double> animation, Widget child) {
  51. return SlideTransition(
  52. position: new Tween<Offset>(
  53. begin: const Offset(0.0, 1.0),
  54. end: const Offset(0.0, 0.0),
  55. ).animate(animation),
  56. child: child,
  57. );
  58. }
  59. static defaultPush(BuildContext context, Widget scene) {
  60. Navigator.of(context).push(
  61. new MaterialPageRoute(
  62. builder: (context) {
  63. return scene;
  64. },
  65. ),
  66. );
  67. }
  68. static push(BuildContext context, Widget scene) {
  69. Navigator.push(context, PageRouteBuilder(pageBuilder: (BuildContext context,
  70. Animation<double> animation, Animation<double> secondaryAnimation) {
  71. // 跳转的路由对象
  72. return createTransition(animation, scene);
  73. }));
  74. }
  75. //主页
  76. static pushHomePage(BuildContext context) {
  77. Navigator.pushAndRemoveUntil(context, PageRouteBuilder(pageBuilder:
  78. (BuildContext context, Animation<double> animation,
  79. Animation<double> secondaryAnimation) {
  80. // 跳转的路由对象
  81. return createTransition(animation, HomeMain());
  82. }), (route) => route == null);
  83. }
  84. //search
  85. static pushSearchPage(BuildContext context) {
  86. AppNavigator.push(context, SearchPage());
  87. }
  88. //扫描
  89. static pushScannerPage(BuildContext context) {
  90. AppNavigator.defaultPush(context, QrScannerPage());
  91. }
  92. //聊天
  93. static pushChatPage(BuildContext context, int friendId,{enterType=0,enterContent}) async {
  94. if(enterType==1){
  95. Navigator.of(context).pop(context);
  96. }
  97. AppNavigator.push(context, ChatPage(key: Key('Chat'), friendId: friendId,enterType: enterType,enterContent: enterContent,));
  98. }
  99. //群聊
  100. static pushGroupChatPage(
  101. BuildContext context, GroupInfoModel groupInfoModel,{enterType=0,enterContent}) async {
  102. if(enterType==1){
  103. Navigator.of(context).pop(context);
  104. }
  105. AppNavigator.defaultPush(context,
  106. GroupChatPage(key: Key('GroupChat'), groupInfoModel: groupInfoModel,enterType: enterType,enterContent: enterContent,));
  107. }
  108. //客服
  109. static pushServicePage(BuildContext context, {questionIndex = -1}) async {
  110. AppNavigator.push(context, ServiceCenterPage(questionIndex));
  111. }
  112. //群成员列表
  113. static pushGroupAllMember(BuildContext context, GroupInfoModel model) async {
  114. AppNavigator.push(context, GroupAllMember(groupInfoModel: model));
  115. }
  116. //群聊二维码
  117. static pushGroupQrPage(BuildContext context,GroupInfoModel model) {
  118. AppNavigator.push(context, GroupQrPage(model));
  119. }
  120. //内部webview
  121. static pushWebview(BuildContext context, String url) async {
  122. AppNavigator.push(context, WebviewPage(url));
  123. }
  124. //连麦
  125. static pushAudioChatPage(BuildContext context, UserInfo userInfo,
  126. [bool isReply = false]) {
  127. //if (SocketUtil().isConnect && SocketUtil().isLogin) {
  128. if (NetWork().isConnect && NetWork().isLogin) {
  129. AppNavigator.push(
  130. context, AudioChatPage(userInfo: userInfo, isReplay: isReply));
  131. } else {
  132. showToast(I18n.of(context).net_error);
  133. }
  134. }
  135. //红包发送界面
  136. static pushCoinBagPage(context) {
  137. Navigator.push(context, PageRouteBuilder(pageBuilder: (BuildContext context,
  138. Animation<double> animation, Animation<double> secondaryAnimation) {
  139. // 跳转的路由对象
  140. return createUpTransition(animation, CoinBagPage());
  141. }));
  142. }
  143. //红包打开界面
  144. static pushCoinBagInfoPage(context, MsgModel msgModel, titleStr) {
  145. AppNavigator.push(context, CoinBagInfoPage(msgModel, titleStr: titleStr));
  146. }
  147. //打开个人信息页面 fromWhere- 0私聊 1首页 2 群聊 addMode : 0不添加,1添加朋友,2新朋友
  148. static pushProfileInfoPage(BuildContext context, int userId,
  149. {int fromWhere = 0, int addMode = 0}) {
  150. AppNavigator.push(
  151. context,
  152. ProfilePage(
  153. userId: userId,
  154. fromWhere: fromWhere,
  155. addMode: addMode,
  156. ));
  157. }
  158. //打开地图界面
  159. static pushMapPage(BuildContext context, LocationResult result) {
  160. AppNavigator.push(context, MapView(locationResult: result));
  161. }
  162. //打开举报界面
  163. static pushInformUserPage(BuildContext context, bool isMale, int userId) {
  164. Navigator.of(context).push(
  165. new MaterialPageRoute(
  166. builder: (context) {
  167. return InformUserPage(
  168. isMan: isMale,
  169. userId: userId,
  170. );
  171. },
  172. ),
  173. );
  174. }
  175. //我的二维码
  176. static pushQrPage(BuildContext context) {
  177. AppNavigator.push(context, QrPage());
  178. }
  179. //进入翻译机器人页面
  180. static pushTranslateRobotPage(BuildContext context) {
  181. AppNavigator.push(context, TranslateRobotPage());
  182. }
  183. //进入反馈小助手页面
  184. static pushCompanyServerPage(BuildContext context) {
  185. AppNavigator.push(context, CompanyServerPage());
  186. }
  187. //发起群聊界面
  188. static pushGroupCreatePage(
  189. BuildContext context, List<FriendModel> friendList) {
  190. AppNavigator.push(
  191. context, CreateGroupPage(GroupOperatingPageType.CreateGroup, [], null));
  192. }
  193. }