123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- import 'dart:math';
- import 'package:flutter/material.dart';
- import 'package:shared_preferences/shared_preferences.dart';
- import 'package:sport/services/api/inject_api.dart';
- enum SearchBody {
- defaultBody,
- suggestions,
- results,
- }
- class SearchModel with ChangeNotifier, InjectApi {
- SearchBody _currentBody = SearchBody.defaultBody;
- SearchBody get currentBody => _currentBody;
- void updateCurrentBody(SearchBody value) {
- _currentBody = value;
- notifyListeners();
- }
- var _searchValue = '';
- List<String> hot = [];
- List<String> history = [];
- String get searchValue => _searchValue;
- final String PREF_KEY = "searchHistory";
- void updateSearchValue(String searchValue) {
- this._searchValue = searchValue;
- notifyListeners();
- updateCurrentBody(this._searchValue.isNotEmpty ? SearchBody.suggestions : SearchBody.defaultBody);
- }
- void queryValue(String value) async {
- SharedPreferences prefs = await SharedPreferences.getInstance();
- if (history == null) history = [];
- if (!history.contains(value)) {
- List<String> items = history
- ..insert(0, value)
- ..sublist(0, min(10, history.length));
- prefs.setStringList(PREF_KEY, items);
- }
- _searchValue = value;
- updateCurrentBody(SearchBody.results);
- }
- void suggestionValue(String value) {
- updateCurrentBody(SearchBody.suggestions);
- }
- void getHistory() async {
- SharedPreferences prefs = await SharedPreferences.getInstance();
- history = prefs.getStringList(PREF_KEY);
- notifyListeners();
- }
- void getHot() async {
- hot = (await api.getSearchWords()).results;
- hot?.shuffle();
- notifyListeners();
- }
- void clearHistory() async {
- SharedPreferences prefs = await SharedPreferences.getInstance();
- prefs.setStringList(PREF_KEY, []);
- history = [];
- notifyListeners();
- }
- }
|