near_detail.dart 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  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. if(res["type"]==1){
  45. NavigatorUtils.push(context, "${BbsRouter.chatRoom}?id=$roomId&type=someToOne");
  46. }else {
  47. NavigatorUtils.push(context, "${BbsRouter.chatRoom}?id=$roomId&type=oneToOne");
  48. }
  49. print(41414111);
  50. setState(() {});
  51. }, onError: (code, msg) {
  52. toasts(msg);
  53. });
  54. }
  55. @override
  56. void dispose() {
  57. _scrollController.dispose();
  58. super.dispose();
  59. }
  60. @override
  61. Widget build(BuildContext context) {
  62. double width = MediaQuery.of(context).size.width;
  63. return Scaffold(
  64. appBar: MyAppBar(
  65. centerTitle: "",
  66. ),
  67. body:Container(
  68. child:ListView(
  69. children: <Widget>[
  70. Container(
  71. // height: 20,
  72. padding:EdgeInsets.only(bottom:ScreenUtil().setWidth(10),top:ScreenUtil().setWidth(10)),
  73. child: Row(
  74. crossAxisAlignment: CrossAxisAlignment.start,
  75. children: <Widget>[
  76. Expanded(
  77. child: GestureDetector(
  78. behavior: HitTestBehavior.opaque,
  79. onTap: (){
  80. },
  81. child:Row(
  82. crossAxisAlignment: CrossAxisAlignment.center,
  83. children:<Widget>[
  84. Container(
  85. margin: EdgeInsets.only(left:ScreenUtil().setWidth(10),right:ScreenUtil().setWidth(10),bottom:ScreenUtil().setWidth(15)),
  86. decoration: BoxDecoration(
  87. borderRadius: BorderRadius.circular(ScreenUtil().setWidth(22)),
  88. ),
  89. child: ClipRRect(
  90. borderRadius: BorderRadius.all(Radius.circular(22)),
  91. child: LoadNetworkImage(
  92. // image: AssetImage(i['img']),
  93. obj.avatarUrl,
  94. width: ScreenUtil().setWidth(43),
  95. height:ScreenUtil().setWidth(43),
  96. // alignment: Alignment.centerLeft,
  97. ),
  98. )
  99. ),
  100. Expanded(
  101. child: Container(
  102. padding: EdgeInsets.only(right:ScreenUtil().setWidth(15),bottom:ScreenUtil().setWidth(15)),
  103. decoration: BoxDecoration(
  104. border: Border(
  105. bottom: BorderSide(width: 0.5, color: Colours.line),
  106. ),
  107. ),
  108. child:Column(
  109. crossAxisAlignment: CrossAxisAlignment.start,
  110. children: <Widget>[
  111. Container(
  112. child:Text(
  113. obj.name??"",
  114. style: TextStyle(
  115. fontSize:ScreenUtil().setSp(17)
  116. ),
  117. textAlign:TextAlign.start,
  118. ),
  119. ),
  120. Container(
  121. child:Text(
  122. (obj.distance.toString()??"")+"米以内",
  123. style: TextStyle(
  124. color:Color(0xff999999),
  125. fontSize:ScreenUtil().setSp(13)
  126. ),
  127. textAlign:TextAlign.start,
  128. ),
  129. ),
  130. ],
  131. )
  132. )
  133. )
  134. ]
  135. ),
  136. )
  137. ),
  138. ],
  139. ),
  140. ),
  141. Container(
  142. width: width,
  143. padding: EdgeInsets.only(top:ScreenUtil().setWidth(100),bottom:ScreenUtil().setWidth(15),left:ScreenUtil().setWidth(25),right:ScreenUtil().setWidth(25)),
  144. color:ThemeUtils.getTabsBg(context),
  145. child: Container(
  146. height:ScreenUtil().setWidth(44),
  147. decoration: BoxDecoration(
  148. borderRadius: BorderRadius.circular(22.0),
  149. gradient: const LinearGradient(
  150. colors: [Color(0xFF00D9FF), Color(0xFF0287FF)]),
  151. ),
  152. child: FlatButton(
  153. // padding: EdgeInsets.all(15.0),
  154. child: Text("打招呼"),
  155. textColor: Colors.white,
  156. // textColor: Colors.white,
  157. onPressed: () {
  158. // NavigatorUtils.push(context, FriendsRouter.chatRoom);
  159. createPrivateChatRoom(obj.userId);
  160. },
  161. ),
  162. ),
  163. )
  164. ]
  165. ),
  166. ),
  167. );
  168. }
  169. }