fix: uncommitted changes, add: loading indicator for search
parent
0caee992ec
commit
d5861bdb78
|
@ -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)),
|
||||||
|
]);
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue