Fix search results screen erratic initial behavior (clearing text field and not showing status)

main
Hank Grabowski 2023-11-30 11:40:16 -05:00
rodzic dece212ded
commit cb1bcad34d
1 zmienionych plików z 26 dodań i 22 usunięć

Wyświetl plik

@ -37,7 +37,6 @@ class _SearchScreenState extends State<SearchScreen> {
static final _logger = Logger('$SearchScreen');
var searchTextController = TextEditingController();
var searchType = SearchTypes.statusesText;
var searching = false;
PagingData nextPage = PagingData(limit: limit);
var searchResult = SearchResults.empty();
Profile? profileOfSearchRequest;
@ -68,9 +67,6 @@ class _SearchScreenState extends State<SearchScreen> {
nextPage = PagingData(limit: limit);
searchResult = SearchResults.empty();
}
setState(() {
searching = true;
});
print('Search $searchType on ${searchTextController.text}');
final result = await SearchClient(profile)
@ -84,9 +80,7 @@ class _SearchScreenState extends State<SearchScreen> {
onError: (error) =>
buildSnackbar(context, 'Error getting search result: $error'),
);
setState(() {
searching = false;
});
print('Ending update');
}
@ -95,7 +89,6 @@ class _SearchScreenState extends State<SearchScreen> {
setState(() {
searchResult = SearchResults.empty();
searchTextController.text = '';
searching = false;
});
}
@ -111,21 +104,25 @@ class _SearchScreenState extends State<SearchScreen> {
clearSearchResults();
}
if (searchResult.isEmpty && searching) {
body = Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
'Searching for ${searchType.toLabel()} on: ${searchTextController.text}',
body = ValueListenableBuilder(
valueListenable: nss.searchLoadingStatus,
builder: (BuildContext context, bool searching, Widget? _) {
if (searchResult.isEmpty && searching) {
return Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
'Searching for ${searchType.toLabel()} on: ${searchTextController.text}',
),
],
),
],
),
);
} else {
body = ResponsiveMaxWidth(child: buildResultBody(profile));
}
);
}
return ResponsiveMaxWidth(child: buildResultBody(profile));
},
);
return Scaffold(
drawer: const StandardAppDrawer(skipPopDismiss: false),
body: SafeArea(
@ -192,7 +189,14 @@ class _SearchScreenState extends State<SearchScreen> {
.toList()),
],
),
if (searching) const LinearProgressIndicator(),
ValueListenableBuilder(
valueListenable: nss.searchLoadingStatus,
builder: (context, searching, _) {
if (searching) {
return const LinearProgressIndicator();
}
return const SizedBox();
}),
Expanded(child: body),
],
),