Класс SearchController
Класс SearchController управляет полем поиска Material 3.
Текст - как у TextEditingController,
открыть view -
openView,
закрыть -
closeView.
Передают в SearchBar и SearchAnchor.
Синтаксис
final SearchController controller = SearchController();
Методы
| Метод | Описание |
|---|---|
openView |
Открывает полноэкранный search view. |
closeView |
Закрывает полноэкранный search view. |
Пример
Давайте откроем view программно:
import 'package:flutter/material.dart';
void main()
{
runApp(const MaterialApp(home: SearchCtrlDemo()));
}
class SearchCtrlDemo extends StatefulWidget
{
const SearchCtrlDemo({super.key});
@override
State<SearchCtrlDemo> createState() => _SearchCtrlDemoState();
}
class _SearchCtrlDemoState extends State<SearchCtrlDemo>
{
final SearchController controller = SearchController();
@override
void dispose()
{
controller.dispose();
super.dispose();
}
@override
Widget build(BuildContext context)
{
return Scaffold(
body: Center(
child: ElevatedButton(
onPressed: () => controller.openView(),
child: Text('abcde'),
),
),
);
}
}
Кнопка вызовет openView у контроллера.
Пример
Давайте передадим controller в SearchBar:
import 'package:flutter/material.dart';
void main()
{
runApp(const MaterialApp(home: SearchCtrlDemo2()));
}
class SearchCtrlDemo2 extends StatefulWidget
{
const SearchCtrlDemo2({super.key});
@override
State<SearchCtrlDemo2> createState() => _SearchCtrlDemo2State();
}
class _SearchCtrlDemo2State extends State<SearchCtrlDemo2>
{
final SearchController controller = SearchController();
@override
void dispose()
{
controller.dispose();
super.dispose();
}
@override
Widget build(BuildContext context)
{
return Scaffold(
body: SearchBar(
controller: controller,
hintText: '12345',
),
);
}
}
SearchBar читает текст из SearchController.
Смотрите также
-
виджет
SearchBar,
поле поиска M3 -
виджет
SearchAnchor,
якорь с view -
класс
TextEditingController,
аналог дляTextField -
функция
showSearch,
поиск через delegate