buildResults method

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

Implementation

@override
Widget buildResults(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 {
    Map<String, String> newParams = <String, String>{};

    if (extraParams.isNotEmpty) {
      newParams.addAll(extraParams);
    }

    if (query.contains('%')) {
      query = query.replaceAll('%', '');
    }

    newParams['t'] = query;

    return Column(
      children: <Widget>[
        Expanded(
          child: builder.buildSearchBody(
            context,
            SafeFutureBuilder<List<W>>(
              future: consumer.list(
                context,
                // TODO(edufolly): Page implementation.
                size: itemsPerPage,
                extraParams: newParams,
                forceOffline: forceOffline,
              ),
              waitingMessage: waitingText,
              builder: (BuildContext context, List<W> data, _) =>
                  data.isNotEmpty
                      ? ListView.separated(
                          physics: const AlwaysScrollableScrollPhysics(),
                          padding: const EdgeInsets.all(16),
                          itemBuilder: (BuildContext context, int index) =>
                              buildResultItem(
                            model: data[index],
                            selected: false,
                            canDelete: canDelete(data[index]),
                            onTap: (W entity) => close(context, entity),
                            afterDeleteRefresh: () async => query += '%',
                          ),
                          separatorBuilder: (_, __) => const FollyDivider(),
                          itemCount: data.length,
                        )
                      : Center(child: Text(searchListEmpty)),
            ),
          ),
        ),
        builder.buildBottomNavigationBar(context) ?? const SizedBox.shrink(),
      ],
    );
  }
}