buildSuggestions method
Implementation
@override
Widget buildSuggestions(BuildContext context) {
if (query.length < minLengthToSearch) {
return Column(
children: <Widget>[
Expanded(
child: builder.buildSearchBody(
context,
Center(
child: Text(
sprintf(startSearchText, <dynamic>[minLengthToSearch]),
textAlign: TextAlign.center,
),
),
),
),
builder.buildBottomNavigationBar(context) ?? const SizedBox.shrink(),
],
);
} else {
if (_lastQuery == query && _lastWidget != null) {
return _lastWidget!;
} else {
Map<String, String> param = <String, String>{};
_lastQuery = query;
if (extraParams.isNotEmpty) {
param.addAll(extraParams);
}
param['t'] = query.replaceAll('%', '');
_lastWidget = Column(
children: <Widget>[
Expanded(
child: builder.buildSearchBody(
context,
SafeFutureBuilder<List<W>>(
future: consumer.list(
context,
// TODO(edufolly): Page implementation.
size: itemsPerPage,
extraParams: param,
forceOffline: forceOffline,
),
waitingMessage: waitingText,
builder: (BuildContext context, List<W> data, _) => data
.isNotEmpty
? Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Padding(
padding: const EdgeInsets.all(8),
child: Text(
hintText,
style: TextStyle(
fontStyle: FontStyle.italic,
color:
Theme.of(context).colorScheme.secondary,
),
),
),
Expanded(
child: ListView.builder(
itemBuilder: (BuildContext context, int index) {
W model = data[index];
return ListTile(
title: builder.getSuggestionTitle(
context,
model,
),
subtitle: builder.getSuggestionSubtitle(
context,
model,
),
onTap: () {
_lastQuery = model.listSearchTerm;
query = _lastQuery!;
showResults(context);
},
);
},
itemCount: data.length,
),
),
],
)
: Center(child: Text(searchListEmpty)),
),
),
),
builder.buildBottomNavigationBar(context) ??
const SizedBox.shrink(),
],
);
return _lastWidget!;
}
}
}