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/view/movie_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() {
runApp(const MyApp());
@ -31,7 +31,7 @@ class MyApp extends StatelessWidget {
class HomePage extends StatefulWidget {
final MovieManager manager;
HomePage(this.manager, {super.key});
const HomePage(this.manager, {super.key});
@override
State<HomePage> createState() => _HomePageState();
@ -102,7 +102,10 @@ class SearchResultPage extends StatelessWidget {
return AnimatedBuilder(
animation: liveSearch,
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);
late final DelayedFunctionCaller _searchCaller;
final MovieManager manager;
bool loading = false;
bool searchingOnline = false;
LiveSearch(this.manager) {
@ -21,16 +22,21 @@ class LiveSearch extends ChangeNotifier {
return;
}
searchResults = manager.localSearch(search);
loading = true;
_searchCaller.call();
notifyListeners();
}
void searchOnline() async {
if (searchTerm.isEmpty) {
loading = false;
notifyListeners();
return;
}
if (searchingOnline) {
loading = true;
_searchCaller.call();
notifyListeners();
return;
}
searchingOnline = true;
@ -49,6 +55,8 @@ class LiveSearch extends ChangeNotifier {
notifyListeners();
} finally {
searchingOnline = false;
loading = false;
notifyListeners();
}
}
}