search_page.dart 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. import 'dart:convert';
  2. import 'package:flutter/material.dart';
  3. import 'package:flutter_screenutil/flutter_screenutil.dart';
  4. import 'package:liftmanager/internal/search/search_router.dart';
  5. import 'package:liftmanager/net/api_service.dart';
  6. import 'package:liftmanager/res/resources.dart';
  7. import 'package:liftmanager/routers/fluro_navigator.dart';
  8. import 'package:liftmanager/utils/theme_utils.dart';
  9. import 'package:liftmanager/utils/toast.dart';
  10. import 'package:liftmanager/widgets/bbs_content.dart';
  11. import 'package:liftmanager/widgets/search_app_bar.dart';
  12. class SearchPage extends StatefulWidget {
  13. @override
  14. State<StatefulWidget> createState() {
  15. return SearchPageState();
  16. }
  17. }
  18. class SearchPageState extends State<SearchPage> {
  19. String searchText;
  20. bool _hasData = false;
  21. String noText = "";
  22. List<dynamic> searchListOne = [];
  23. List<dynamic> searchListTwo = [];
  24. List<dynamic> searchListThree = [];
  25. List<dynamic> searchListFour = [];
  26. Future getSearchList(text) async {
  27. await NewApiService().getSearchIndex(text, onSuccess: (res) {
  28. //Uri.encodeComponent(_keyword)
  29. // res.records.forEach((item){
  30. // questionsList.addAll(item);
  31. // });
  32. if(res.length>0){
  33. res.forEach((item){
  34. if(item.code=="1"){
  35. searchListOne = item.infoList.take(2).toList();
  36. }
  37. else if(item.code=="2"){
  38. searchListTwo = item.infoList.take(3).toList();
  39. }
  40. else if(item.code=="3"){
  41. searchListThree = item.infoList.take(2).toList();
  42. }
  43. else if(item.code=="4"){
  44. searchListFour = item.infoList.take(3).toList();
  45. }
  46. });
  47. print(JsonEncoder().convert(res));
  48. print(JsonEncoder().convert(searchListOne));
  49. print("searchListOne");
  50. print(JsonEncoder().convert(searchListTwo));
  51. print("searchListTwo");
  52. print(JsonEncoder().convert(searchListThree));
  53. print("searchListThree");
  54. print(JsonEncoder().convert(searchListFour));
  55. print(searchListFour.length);
  56. print("searchListFour");
  57. print(898988);
  58. setState(() {});
  59. _hasData = true;
  60. }else {
  61. print(123);
  62. setState(() {
  63. noText = "暂无数据";
  64. });
  65. print(noText);
  66. }
  67. }, onError: (code, msg) {
  68. toasts(msg);
  69. });
  70. }
  71. @override
  72. void initState() {
  73. /// 默认为加载中状态,本页面场景默认为空
  74. super.initState();
  75. searchListOne = [];
  76. searchListTwo = [];
  77. searchListThree = [];
  78. searchListFour = [];
  79. }
  80. @override
  81. Widget build(BuildContext context) {
  82. return Scaffold(
  83. appBar: SearchAppBar(
  84. hintText: "请输入需要搜索的内容",
  85. onPressed: (text){
  86. if (text.isEmpty){
  87. toasts("搜索关键字不能为空!");
  88. return;
  89. }
  90. FocusScope.of(context).unfocus();
  91. print(text);
  92. print(22222);
  93. searchText = text;
  94. searchListOne = [];
  95. searchListTwo = [];
  96. searchListThree = [];
  97. searchListFour = [];
  98. getSearchList(text);
  99. },
  100. ),
  101. body: _hasData?ListView(
  102. children: <Widget>[
  103. searchListOne != null && searchListOne.length >=1?LableTitle(
  104. title: "问题",
  105. userTap: () {
  106. NavigatorUtils.push(context, "${SearchRouter.searchIndex}?type=1&text=${Uri.encodeComponent(searchText)}");
  107. },
  108. ):Container(child:null),
  109. searchListOne != null && searchListOne.length >=1?Container(
  110. child: HotQuestion(initList: searchListOne)
  111. ):Container(child:null),
  112. // Container(height: 5, color: Color(0xffeeeeee)),
  113. searchListTwo != null && searchListTwo.length >=1?LableTitle(
  114. title: "学堂",
  115. userTap: () {
  116. NavigatorUtils.push(context, "${SearchRouter.searchIndex}?type=2&text=${Uri.encodeComponent(searchText)}");
  117. },
  118. ):Container(child:null),
  119. searchListTwo != null && searchListTwo.length >=1
  120. ? Container(
  121. decoration: BoxDecoration(
  122. border: Border(
  123. bottom: BorderSide(width: 0.5, color: Colours.line),
  124. ),
  125. ),
  126. height: ScreenUtil().setWidth(210),
  127. padding:
  128. EdgeInsets.only(top: ScreenUtil().setWidth(10)),
  129. child: HotClass(initList: searchListTwo),
  130. )
  131. : Container(child: null),
  132. // Container(height: 5, color: Color(0xffeeeeee)),
  133. searchListThree != null && searchListThree.length >=1?LableTitle(
  134. title: "商品",
  135. userTap: () {
  136. NavigatorUtils.push(context, "${SearchRouter.searchIndex}?type=3&text=${Uri.encodeComponent(searchText)}");
  137. },
  138. ):Container(child:null),
  139. searchListThree != null && searchListThree.length >=1?Container(
  140. child:HotProduct(productList: searchListThree)
  141. ):Container(child:null),
  142. // Container(height: 5, color: Color(0xffeeeeee)),
  143. searchListFour != null && searchListFour.length >=1?LableTitle(
  144. title: "职位",
  145. userTap: () {
  146. NavigatorUtils.push(context, "${SearchRouter.searchIndex}?type=4&text=${Uri.encodeComponent(searchText)}");
  147. },
  148. ):Container(child:null),
  149. searchListFour != null && searchListFour.length >=1? Container(
  150. color: ThemeUtils.getTabsBg(context),
  151. padding: EdgeInsets.only(bottom: 20),
  152. child:HotPosition(positionList: searchListFour)
  153. ):Container(child:null),
  154. ],
  155. ):Center(child:Text(noText))
  156. );
  157. }
  158. }