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

Виджет Builder

Виджет Builder вызывает builder с BuildContext, привязанным к этому Builder. Так получают context ниже InheritedWidget или внутри методов, где context родителя недоступен.

Синтаксис

Builder( builder: (context) { return Text('abcde'); }, )

Параметры

Параметр Описание
builder Функция, которая получает BuildContext Builder и возвращает виджет.

Пример

Давайте прочитаем Theme внутри Builder:

import 'package:flutter/material.dart'; void main() { runApp( MaterialApp( theme: ThemeData(colorScheme: ColorScheme.fromSeed(seedColor: Colors.purple)), home: Scaffold( body: Center( child: Builder( builder: (context) { final color = Theme.of(context).colorScheme.primary; return Text('abcde', style: TextStyle(color: color)); }, ), ), ), ), ); }

На экране Builder даст context и окрасит 'abcde'.

Пример

Давайте найдем ScaffoldState через Builder:

import 'package:flutter/material.dart'; void main() { runApp( MaterialApp( home: Scaffold( body: Center( child: Builder( builder: (context) { final has = context.findAncestorStateOfType<ScaffoldState>() != null; return Text(has ? '12345' : 'abcde'); }, ), ), ), ), ); }

На экране Builder покажет '12345', потому что ScaffoldState найден.

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

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