Hibok
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.
 
 
 
 
 
 

195 рядки
6.5 KiB

  1. import 'dart:io';
  2. import 'package:cached_network_image/cached_network_image.dart';
  3. import 'package:chat/home/global_search.dart';
  4. import 'package:chat/home/new_friends.dart';
  5. import 'package:chat/models/friends_info.dart';
  6. import 'package:chat/utils/TutorialOverlay.dart';
  7. import 'package:flutter/material.dart';
  8. import 'package:chat/data/UserData.dart';
  9. import 'package:chat/data/constants.dart';
  10. import 'package:chat/generated/i18n.dart';
  11. import 'package:chat/utils/CustomUI.dart';
  12. import 'package:chat/utils/HttpUtil.dart';
  13. import 'package:chat/utils/MessageMgr.dart';
  14. import 'package:chat/utils/TokenMgr.dart';
  15. import 'package:chat/utils/conversation_table.dart';
  16. import 'package:chat/utils/friend_list_mgr.dart';
  17. import 'package:chat/utils/screen.dart';
  18. import 'package:dio/dio.dart';
  19. import 'package:oktoast/oktoast.dart';
  20. import 'package:permission_handler/permission_handler.dart';
  21. import 'package:shared_preferences/shared_preferences.dart';
  22. import 'address_book.dart';
  23. import 'my_qr.dart';
  24. List showUserList = [];
  25. bool isHaveNewFriends() {
  26. return showUserList.length > 0;
  27. }
  28. class NewAddFriendsPage extends StatefulWidget {
  29. @override
  30. _NewAddFriendsPageState createState() => _NewAddFriendsPageState();
  31. }
  32. class _NewAddFriendsPageState extends State<NewAddFriendsPage> {
  33. ScrollController _scrollController;
  34. List<Widget> _functionButtons = [];
  35. @override
  36. void initState() {
  37. super.initState();
  38. _functionButtons = [
  39. InkWell(
  40. onTap: () {
  41. Navigator.of(context).push(TutorialOverlay(
  42. child: InkWell(
  43. onTap: () {
  44. Navigator.of(context).pop();
  45. },
  46. child: Scaffold(
  47. backgroundColor:
  48. Constants.BlackTextColor.withOpacity(0.0),
  49. body: Container(
  50. margin: EdgeInsets.only(top: Screen.height*0.05),
  51. alignment: Alignment.center,
  52. child: MyQr())))));
  53. },
  54. child: Container(
  55. height: 70,
  56. width: Screen.width,
  57. child: Row(
  58. mainAxisAlignment: MainAxisAlignment.center,
  59. crossAxisAlignment: CrossAxisAlignment.center,
  60. children: [
  61. Container(
  62. constraints: BoxConstraints(maxWidth: 200),
  63. child: Text(
  64. '${I18n.of(Constants.getCurrentContext()).my_qr}: ${UserData().basicInfo.nickName}',
  65. style: TextStyle(fontSize: 13),
  66. overflow: TextOverflow.ellipsis,
  67. )),
  68. SizedBox(width: 9),
  69. Container(
  70. margin: EdgeInsets.only(bottom: 3),
  71. child: Icon(
  72. IconData(0xe682, fontFamily: Constants.IconFontFamily),
  73. size: 18,
  74. color: const Color(0xFF008AFF),
  75. ))
  76. ]),
  77. )),
  78. FriendsInfo(
  79. avatar: '',
  80. userId: 0,
  81. iconCode: 0xe659,
  82. title: I18n.of(Constants.getCurrentContext()).scan,
  83. gradient: LinearGradient(
  84. begin: Alignment.topCenter,
  85. end: Alignment.bottomCenter,
  86. colors: <Color>[
  87. const Color(0xFF6171F1),
  88. const Color(0xFF3441C1),
  89. ]),
  90. onPressed: () {
  91. CustomUI().goScanPage(Constants.getCurrentContext());
  92. }),
  93. FriendsInfo(
  94. avatar: '',
  95. userId: 0,
  96. iconCode: 0xe67a,
  97. isShowDivder: true,
  98. title: I18n.of(Constants.getCurrentContext()).contact_add,
  99. gradient: LinearGradient(
  100. begin: Alignment.topCenter,
  101. end: Alignment.bottomCenter,
  102. colors: <Color>[
  103. const Color(0xFF1AC59E),
  104. const Color(0xFF088E76),
  105. ]),
  106. onPressed: () async {
  107. final PermissionStatus addStatus = await PermissionHandler()
  108. .checkPermissionStatus(PermissionGroup.contacts);
  109. if ((addStatus == PermissionStatus.unknown ||
  110. addStatus == PermissionStatus.denied) &&
  111. Platform.isIOS) {
  112. CustomUI.buildContacts(context, I18n.of(context).privacyAgreement,
  113. I18n.of(context).determine, () {
  114. Navigator.of(context).pop();
  115. showPermission();
  116. }, title: I18n.of(context).tip);
  117. } else {
  118. showPermission();
  119. }
  120. }),
  121. ];
  122. _scrollController = new ScrollController();
  123. }
  124. showPermission() async {
  125. if (await CustomUI.showPermissionSetting(
  126. Constants.getCurrentContext(),
  127. PermissionGroup.contacts,
  128. I18n.of(Constants.getCurrentContext()).contact_permission)) {
  129. MessageMgr().emit('PostContact');
  130. Navigator.push(Constants.getCurrentContext(),
  131. MaterialPageRoute<void>(builder: (BuildContext context) {
  132. return ContactsPage();
  133. }));
  134. }
  135. }
  136. @override
  137. void dispose() {
  138. super.dispose();
  139. _scrollController.dispose();
  140. }
  141. @override
  142. Widget build(BuildContext context) {
  143. final List<Widget> _body = [];
  144. _body.addAll([
  145. ListView.builder(
  146. controller: _scrollController,
  147. itemBuilder: (BuildContext context, int index) {
  148. if (index == 0) {
  149. return Padding(
  150. padding: EdgeInsets.only(top: 7),
  151. child: _functionButtons[index],
  152. );
  153. } else {
  154. return _functionButtons[index];
  155. }
  156. },
  157. itemCount: _functionButtons.length,
  158. ),
  159. ]);
  160. return Scaffold(
  161. resizeToAvoidBottomPadding: false,
  162. appBar: AppBar(
  163. backgroundColor: AppColors.NewAppbarBgColor,
  164. title: Text(I18n.of(context).add_friends,
  165. textScaleFactor: 1.0, style: Constants.MainTitleStyle),
  166. centerTitle: true,
  167. elevation: 1,
  168. leading: CustomUI.buildCustomLeading(context),
  169. bottom: CustomUI.buildSearchButton(context, () {
  170. Navigator.of(context).push(
  171. new MaterialPageRoute(
  172. builder: (context) {
  173. return GlobalSearchPage(
  174. type: GlobalSearchPageType.SearchNewFriends,
  175. );
  176. },
  177. ),
  178. );
  179. })),
  180. body: Stack(
  181. children: _body,
  182. ));
  183. }
  184. }