Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import 'package:edu_city/screens/edu_center_screen.dart';
- import 'package:edu_city/widgets/autocomplete_textfield.dart';
- import 'package:edu_city/algorithm/Dart_Searchify.dart';
- import 'package:edu_city/constants/constants.dart';
- import 'package:edu_city/manager/networking.dart';
- import 'package:edu_city/models/services/search_edu.dart';
- import 'package:edu_city/widgets/edu_card.dart';
- import 'package:flutter/material.dart';
- import 'package:flutter/painting.dart';
- class SearchTabPage extends StatefulWidget {
- @override
- _SearchTabPageState createState() => _SearchTabPageState();
- }
- class _SearchTabPageState extends State<SearchTabPage> {
- String onChangedValue = "";
- List<String> eduNames = [];
- Future<List<SearchEdu>> searchEdu;
- Widget onChanged(List<SearchEdu> data) {
- return ListView.builder(
- itemBuilder: (context, value) {
- if (onChangedValue.length == 0) {
- if (data[value].isTop)
- return EduCard(
- description: data[value].description,
- eduName: data[value].name,
- image: NetworkImage(data[value].logo),
- isTop: data[value].isTop,
- numOfFilials: data[value].numberOfBranches,
- numOfStudents: data[value].numberOfStudents,
- onPressed: () {
- // setState(() {
- print('object');
- Navigator.push(context, MaterialPageRoute(builder: (context) {
- return EduCenterScreen();
- }));
- // });
- },
- );
- else
- return Container();
- } else {
- Pattern pattern = Pattern(onChangedValue.toLowerCase().trim());
- if (pattern.matches(
- data[value].name.toLowerCase().trim(), Search.KNUTH_MORRIS) ||
- data[value].name == onChangedValue) {
- print(data[value].name);
- return EduCard(
- description: data[value].description,
- eduName: data[value].name,
- image: NetworkImage(data[value].logo),
- isTop: data[value].isTop,
- numOfFilials: data[value].numberOfBranches,
- numOfStudents: data[value].numberOfStudents,
- );
- } else
- return Container();
- }
- },
- itemCount: data.length,
- );
- }
- @override
- void initState() {
- super.initState();
- searchEdu = Networking().fetchEduSearch();
- }
- @override
- Widget build(BuildContext context) {
- return Scaffold(
- appBar: PreferredSize(
- child: SafeArea(
- child: Container(
- decoration: BoxDecoration(shape: BoxShape.rectangle),
- margin: EdgeInsets.only(top: 10, right: 20, left: 10),
- child: Material(
- elevation: 5,
- borderRadius: BorderRadius.circular(20),
- child: SimpleAutoCompleteTextField(
- submitOnSuggestionTap: true,
- style: TextStyle(),
- key: null,
- textChanged: (textChanged) {
- setState(() {
- onChangedValue = textChanged.toLowerCase().trim();
- });
- },
- minLength: 2,
- clearOnSubmit: false,
- suggestions: eduNames,
- decoration: InputDecoration(
- fillColor: Colors.white,
- filled: true,
- contentPadding: EdgeInsets.symmetric(horizontal: 20),
- suffixIcon: Icon(
- Icons.search,
- color: endColor,
- ),
- hintText: 'Поиск...',
- border: OutlineInputBorder(
- borderRadius: BorderRadius.circular(40),
- borderSide: BorderSide.none),
- ),
- ),
- ),
- ),
- ),
- preferredSize: Size.fromHeight(80),
- ),
- body: FutureBuilder<List<SearchEdu>>(
- builder: (context, snapshot) {
- if (snapshot.hasData) {
- eduNames.clear();
- snapshot.data.forEach((element) {
- eduNames.add(element.name);
- });
- return onChanged(snapshot.data);
- } else if (snapshot.hasError) {
- return Center(
- child: Text("No Connection"),
- );
- }
- return Center(child: CircularProgressIndicator());
- },
- future: searchEdu,
- ),
- );
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement