fix: uncommitted changes, add: loading indicator for search

main
daniel-michel 2024-01-08 21:58:18 +01:00
parent 0caee992ec
commit d5861bdb78
2 changed files with 14 additions and 3 deletions

View File

@ -4,7 +4,7 @@ import 'package:release_schedule/model/movie.dart';
import 'package:release_schedule/model/movie_manager.dart'; import 'package:release_schedule/model/movie_manager.dart';
import 'package:release_schedule/view/movie_list.dart'; import 'package:release_schedule/view/movie_list.dart';
import 'package:release_schedule/view/movie_manager_list.dart'; import 'package:release_schedule/view/movie_manager_list.dart';
import 'package:release_schedule/view/swipe-transition.dart'; import 'package:release_schedule/view/swipe_transition.dart';
void main() { void main() {
runApp(const MyApp()); runApp(const MyApp());
@ -31,7 +31,7 @@ class MyApp extends StatelessWidget {
class HomePage extends StatefulWidget { class HomePage extends StatefulWidget {
final MovieManager manager; final MovieManager manager;
HomePage(this.manager, {super.key}); const HomePage(this.manager, {super.key});
@override @override
State<HomePage> createState() => _HomePageState(); State<HomePage> createState() => _HomePageState();
@ -102,7 +102,10 @@ class SearchResultPage extends StatelessWidget {
return AnimatedBuilder( return AnimatedBuilder(
animation: liveSearch, animation: liveSearch,
builder: (context, child) { builder: (context, child) {
return MovieList(liveSearch.searchResults); return Column(children: [
liveSearch.loading ? const LinearProgressIndicator() : Container(),
Expanded(child: MovieList(liveSearch.searchResults)),
]);
}, },
); );
} }

View File

@ -9,6 +9,7 @@ class LiveSearch extends ChangeNotifier {
Duration minTimeBetweenRequests = const Duration(milliseconds: 200); Duration minTimeBetweenRequests = const Duration(milliseconds: 200);
late final DelayedFunctionCaller _searchCaller; late final DelayedFunctionCaller _searchCaller;
final MovieManager manager; final MovieManager manager;
bool loading = false;
bool searchingOnline = false; bool searchingOnline = false;
LiveSearch(this.manager) { LiveSearch(this.manager) {
@ -21,16 +22,21 @@ class LiveSearch extends ChangeNotifier {
return; return;
} }
searchResults = manager.localSearch(search); searchResults = manager.localSearch(search);
loading = true;
_searchCaller.call(); _searchCaller.call();
notifyListeners(); notifyListeners();
} }
void searchOnline() async { void searchOnline() async {
if (searchTerm.isEmpty) { if (searchTerm.isEmpty) {
loading = false;
notifyListeners();
return; return;
} }
if (searchingOnline) { if (searchingOnline) {
loading = true;
_searchCaller.call(); _searchCaller.call();
notifyListeners();
return; return;
} }
searchingOnline = true; searchingOnline = true;
@ -49,6 +55,8 @@ class LiveSearch extends ChangeNotifier {
notifyListeners(); notifyListeners();
} finally { } finally {
searchingOnline = false; searchingOnline = false;
loading = false;
notifyListeners();
} }
} }
} }