buildSuggestions method

  1. @override
Widget buildSuggestions(
  1. BuildContext context
)
override

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!;
    }
  }
}