near_detail.dart 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. import 'package:flutter/material.dart';
  2. import 'package:liftmanager/res/gaps.dart';
  3. import 'package:liftmanager/net/api_service.dart';
  4. import 'package:liftmanager/utils/toast.dart';
  5. import 'package:liftmanager/widgets/app_bar.dart';
  6. import 'package:liftmanager/internal/search/search_router.dart';
  7. import 'package:liftmanager/widgets/app_search_bar.dart';
  8. import 'package:liftmanager/res/resources.dart';
  9. import 'package:liftmanager/routers/fluro_navigator.dart';
  10. import 'package:liftmanager/widgets/load_image.dart';
  11. import 'package:flutter_screenutil/flutter_screenutil.dart';
  12. import 'package:liftmanager/internal/friends/friends_router.dart';
  13. import 'package:flustars/flustars.dart' as FlutterStars;
  14. import 'package:liftmanager/internal/friends/model/near_model.dart';
  15. import 'package:liftmanager/utils/log_util.dart';
  16. import 'dart:convert';
  17. import 'package:liftmanager/internal/bbs/bbs_router.dart';
  18. import 'package:liftmanager/utils/theme_utils.dart';
  19. class NearDetail extends StatefulWidget {
  20. // QuestionList(this.index);
  21. // final String index;
  22. @override
  23. State<StatefulWidget> createState() {
  24. return NearDetailState();
  25. }
  26. }
  27. class NearDetailState extends State<NearDetail> {
  28. // NewsDetailItem item = NewsDetailItem();
  29. ScrollController _scrollController = new ScrollController();
  30. dynamic obj;
  31. void initState() {
  32. super.initState();
  33. obj = FlutterStars.SpUtil.getObj(
  34. "nearUserDetail", (v) => NearModel.fromJson(v));
  35. LogUtil.d(JsonEncoder().convert(obj));
  36. print(123456);
  37. }
  38. Future createPrivateChatRoom(id) async {
  39. await NewApiService().createPrivateChatRoom(id.toString(), onSuccess: (res) {
  40. // LogUtil.d(JsonEncoder().convert(res.records));
  41. // LogUtil.d("5555664");
  42. print(res["room"]);
  43. String roomId = res["room"];
  44. NavigatorUtils.push(context, "${BbsRouter.chatRoom}?id=$roomId&type=nearToOne&toUserId=$id");
  45. // if(res["type"]==1){
  46. // NavigatorUtils.push(context, "${BbsRouter.chatRoom}?id=$roomId&type=someToOne");
  47. // }else {
  48. // NavigatorUtils.push(context, "${BbsRouter.chatRoom}?id=$roomId&type=oneToOne");
  49. // }
  50. print(41414111);
  51. setState(() {});
  52. }, onError: (code, msg) {
  53. toasts(msg);
  54. });
  55. }
  56. @override
  57. void dispose() {
  58. _scrollController.dispose();
  59. super.dispose();
  60. }
  61. @override
  62. Widget build(BuildContext context) {
  63. double width = MediaQuery.of(context).size.width;
  64. return Scaffold(
  65. appBar: MyAppBar(
  66. centerTitle: "",
  67. ),
  68. body:Container(
  69. child:ListView(
  70. children: <Widget>[
  71. Container(
  72. // height: 20,
  73. padding:EdgeInsets.only(bottom:ScreenUtil().setWidth(10),top:ScreenUtil().setWidth(10)),
  74. child: Row(
  75. crossAxisAlignment: CrossAxisAlignment.start,
  76. children: <Widget>[
  77. Expanded(
  78. child: GestureDetector(
  79. behavior: HitTestBehavior.opaque,
  80. onTap: (){
  81. },
  82. child:Row(
  83. crossAxisAlignment: CrossAxisAlignment.center,
  84. children:<Widget>[
  85. Container(
  86. margin: EdgeInsets.only(left:ScreenUtil().setWidth(10),right:ScreenUtil().setWidth(10),bottom:ScreenUtil().setWidth(15)),
  87. decoration: BoxDecoration(
  88. borderRadius: BorderRadius.circular(ScreenUtil().setWidth(22)),
  89. ),
  90. child: ClipRRect(
  91. borderRadius: BorderRadius.all(Radius.circular(22)),
  92. child: LoadNetworkImage(
  93. // image: AssetImage(i['img']),
  94. obj.avatarUrl,
  95. width: ScreenUtil().setWidth(43),
  96. height:ScreenUtil().setWidth(43),
  97. // alignment: Alignment.centerLeft,
  98. ),
  99. )
  100. ),
  101. Expanded(
  102. child: Container(
  103. padding: EdgeInsets.only(right:ScreenUtil().setWidth(15),bottom:ScreenUtil().setWidth(15)),
  104. decoration: BoxDecoration(
  105. border: Border(
  106. bottom: BorderSide(width: 0.5, color: Colours.line),
  107. ),
  108. ),
  109. child:Column(
  110. crossAxisAlignment: CrossAxisAlignment.start,
  111. children: <Widget>[
  112. Container(
  113. child:Text(
  114. obj.name??"",
  115. style: TextStyle(
  116. fontSize:ScreenUtil().setSp(17)
  117. ),
  118. textAlign:TextAlign.start,
  119. ),
  120. ),
  121. Container(
  122. child:Text(
  123. (obj.distance.toString()??"")+"米以内",
  124. style: TextStyle(
  125. color:Color(0xff999999),
  126. fontSize:ScreenUtil().setSp(13)
  127. ),
  128. textAlign:TextAlign.start,
  129. ),
  130. ),
  131. ],
  132. )
  133. )
  134. )
  135. ]
  136. ),
  137. )
  138. ),
  139. ],
  140. ),
  141. ),
  142. Container(
  143. width: width,
  144. padding: EdgeInsets.only(top:ScreenUtil().setWidth(100),bottom:ScreenUtil().setWidth(15),left:ScreenUtil().setWidth(25),right:ScreenUtil().setWidth(25)),
  145. color:ThemeUtils.getTabsBg(context),
  146. child: Container(
  147. height:ScreenUtil().setWidth(44),
  148. decoration: BoxDecoration(
  149. borderRadius: BorderRadius.circular(22.0),
  150. gradient: const LinearGradient(
  151. colors: [Color(0xFF00D9FF), Color(0xFF0287FF)]),
  152. ),
  153. child: FlatButton(
  154. // padding: EdgeInsets.all(15.0),
  155. child: Text("打招呼"),
  156. textColor: Colors.white,
  157. // textColor: Colors.white,
  158. onPressed: () {
  159. // NavigatorUtils.push(context, FriendsRouter.chatRoom);
  160. createPrivateChatRoom(obj.userId);
  161. },
  162. ),
  163. ),
  164. )
  165. ]
  166. ),
  167. ),
  168. );
  169. }
  170. }