search_page.dart 6.1 KB

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