Advertisement
Guest User

Untitled

a guest
Feb 20th, 2020
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Dart 4.55 KB | None | 0 0
  1. import 'package:edu_city/screens/edu_center_screen.dart';
  2. import 'package:edu_city/widgets/autocomplete_textfield.dart';
  3. import 'package:edu_city/algorithm/Dart_Searchify.dart';
  4. import 'package:edu_city/constants/constants.dart';
  5. import 'package:edu_city/manager/networking.dart';
  6. import 'package:edu_city/models/services/search_edu.dart';
  7. import 'package:edu_city/widgets/edu_card.dart';
  8. import 'package:flutter/material.dart';
  9. import 'package:flutter/painting.dart';
  10.  
  11. class SearchTabPage extends StatefulWidget {
  12.   @override
  13.   _SearchTabPageState createState() => _SearchTabPageState();
  14. }
  15.  
  16. class _SearchTabPageState extends State<SearchTabPage> {
  17.   String onChangedValue = "";
  18.   List<String> eduNames = [];
  19.   Future<List<SearchEdu>> searchEdu;
  20.  
  21.   Widget onChanged(List<SearchEdu> data) {
  22.     return ListView.builder(
  23.       itemBuilder: (context, value) {
  24.         if (onChangedValue.length == 0) {
  25.           if (data[value].isTop)
  26.             return EduCard(
  27.               description: data[value].description,
  28.               eduName: data[value].name,
  29.               image: NetworkImage(data[value].logo),
  30.               isTop: data[value].isTop,
  31.               numOfFilials: data[value].numberOfBranches,
  32.               numOfStudents: data[value].numberOfStudents,
  33.               onPressed: () {
  34.                 // setState(() {
  35.                 print('object');
  36.                 Navigator.push(context, MaterialPageRoute(builder: (context) {
  37.                   return EduCenterScreen();
  38.                 }));
  39.                 // });
  40.               },
  41.             );
  42.           else
  43.             return Container();
  44.         } else {
  45.           Pattern pattern = Pattern(onChangedValue.toLowerCase().trim());
  46.           if (pattern.matches(
  47.                   data[value].name.toLowerCase().trim(), Search.KNUTH_MORRIS) ||
  48.               data[value].name == onChangedValue) {
  49.             print(data[value].name);
  50.             return EduCard(
  51.               description: data[value].description,
  52.               eduName: data[value].name,
  53.               image: NetworkImage(data[value].logo),
  54.               isTop: data[value].isTop,
  55.               numOfFilials: data[value].numberOfBranches,
  56.               numOfStudents: data[value].numberOfStudents,
  57.             );
  58.           } else
  59.             return Container();
  60.         }
  61.       },
  62.       itemCount: data.length,
  63.     );
  64.   }
  65.  
  66.   @override
  67.   void initState() {
  68.     super.initState();
  69.     searchEdu = Networking().fetchEduSearch();
  70. }
  71.  
  72.   @override
  73.   Widget build(BuildContext context) {
  74.     return Scaffold(
  75.       appBar: PreferredSize(
  76.         child: SafeArea(
  77.           child: Container(
  78.             decoration: BoxDecoration(shape: BoxShape.rectangle),
  79.             margin: EdgeInsets.only(top: 10, right: 20, left: 10),
  80.             child: Material(
  81.               elevation: 5,
  82.               borderRadius: BorderRadius.circular(20),
  83.               child: SimpleAutoCompleteTextField(
  84.                 submitOnSuggestionTap: true,
  85.                 style: TextStyle(),
  86.                 key: null,
  87.                 textChanged: (textChanged) {
  88.                   setState(() {
  89.                     onChangedValue = textChanged.toLowerCase().trim();
  90.                   });
  91.                 },
  92.                 minLength: 2,
  93.                 clearOnSubmit: false,
  94.                 suggestions: eduNames,
  95.                 decoration: InputDecoration(
  96.                   fillColor: Colors.white,
  97.                   filled: true,
  98.                   contentPadding: EdgeInsets.symmetric(horizontal: 20),
  99.                   suffixIcon: Icon(
  100.                     Icons.search,
  101.                     color: endColor,
  102.                   ),
  103.                   hintText: 'Поиск...',
  104.                   border: OutlineInputBorder(
  105.                       borderRadius: BorderRadius.circular(40),
  106.                       borderSide: BorderSide.none),
  107.                 ),
  108.               ),
  109.             ),
  110.           ),
  111.         ),
  112.         preferredSize: Size.fromHeight(80),
  113.       ),
  114.       body: FutureBuilder<List<SearchEdu>>(
  115.         builder: (context, snapshot) {
  116.           if (snapshot.hasData) {
  117.             eduNames.clear();
  118.             snapshot.data.forEach((element) {
  119.               eduNames.add(element.name);
  120.             });
  121.             return onChanged(snapshot.data);
  122.           } else if (snapshot.hasError) {
  123.             return Center(
  124.               child: Text("No Connection"),
  125.             );
  126.           }
  127.           return Center(child: CircularProgressIndicator());
  128.         },
  129.         future: searchEdu,
  130.       ),
  131.     );
  132.   }
  133. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement