Виджет MergeSemantics
Виджет MergeSemantics объединяет описания
вложенных элементов, чтобы диктор прочитал их
одним фрагментом. Параметр child
задаёт корень группы. Часто оборачивают
ряд из иконки и текста.
Синтаксис
MergeSemantics(
child: Row(
children: [
Icon(Icons.email),
Text('abcde'),
],
),
)
Параметры
| Параметр | Описание |
|---|---|
child |
Дочерний виджет, семантику которого нужно слить. Обязательный параметр. |
Пример
Давайте объединим иконку и подпись для диктора:
import 'package:flutter/material.dart';
void main()
{
runApp(
MaterialApp(
home: Scaffold(
body: Center(
child: MergeSemantics(
child: Row(
mainAxisSize: MainAxisSize.min,
children: [
const Icon(Icons.email),
const SizedBox(width: 8),
const Text('abcde'),
],
),
),
),
),
),
);
}
На экране в ряд иконка и текст 'abcde',
а диктор воспримет их как один элемент.
Пример
Давайте сольём две строки в одном блоке:
import 'package:flutter/material.dart';
void main()
{
runApp(
MaterialApp(
home: Scaffold(
body: Center(
child: MergeSemantics(
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
const Text('abcde'),
const Text('12345'),
],
),
),
),
),
),
);
}
На экране две строки друг под другом, озвучивание пойдёт одним блоком без паузы между ними.
Смотрите также
-
виджет
Semantics,
который задаёт label и hint вручную -
виджет
ExcludeSemantics,
который убирает дочерние узлы из дерева -
виджет
SemanticsDebugger,
который показывает итоговое дерево на экране -
виджет
Row,
который часто лежит внутриMergeSemantics