Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
472 of 1024 menu
◀ ▶

Функция showSearch

Функция showSearch пушит search route поверх текущего экрана. В context передают контекст, в delegate - SearchDelegate с buildLeading, buildActions, buildSuggestions и buildResults. Future завершается результатом close().

Синтаксис

showSearch( context: context, delegate: SimpleSearchDelegate(), )

Параметры

Параметр Описание
context BuildContext активного экрана.
delegate SearchDelegate, который рисует UI поиска.
query Начальный текст в поле поиска.
useRootNavigator Какой Navigator использовать для маршрута.

Пример

Давайте откроем поиск из AppBar:

import 'package:flutter/material.dart'; void main() { runApp(const MaterialApp(home: ShowSearchDemo())); } class ShowSearchDemo extends StatelessWidget { const ShowSearchDemo({super.key}); @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('abcde'), actions: [ IconButton( icon: Icon(Icons.search), onPressed: () { showSearch( context: context, delegate: _BasicDelegate(), ); }, ), ], ), body: Center(child: Text('12345')), ); } } class _BasicDelegate extends SearchDelegate<void> { @override Widget buildLeading(BuildContext context) { return IconButton( icon: Icon(Icons.arrow_back), onPressed: () => close(context, null), ); } @override List<Widget> buildActions(BuildContext context) => []; @override Widget buildResults(BuildContext context) { return Center(child: Text('abcde')); } @override Widget buildSuggestions(BuildContext context) { return ListTile(title: Text('12345')); } }

Кнопка лупы вызовет showSearch с delegate.

Пример

Давайте передадим начальный query:

import 'package:flutter/material.dart'; void main() { runApp(const MaterialApp(home: ShowSearchQueryDemo())); } class ShowSearchQueryDemo extends StatelessWidget { const ShowSearchQueryDemo({super.key}); @override Widget build(BuildContext context) { return Scaffold( body: Center( child: ElevatedButton( onPressed: () { showSearch( context: context, query: 'abcde', delegate: _QueryDelegate(), ); }, child: Text('12345'), ), ), ); } } class _QueryDelegate extends SearchDelegate<void> { @override Widget buildLeading(BuildContext context) { return IconButton( icon: Icon(Icons.arrow_back), onPressed: () => close(context, null), ); } @override List<Widget> buildActions(BuildContext context) => []; @override Widget buildResults(BuildContext context) { return Center(child: Text(query)); } @override Widget buildSuggestions(BuildContext context) { return buildResults(context); } }

Поле поиска откроется с текстом 'abcde'.

Смотрите также

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить