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

Миксин WidgetsBinding

Миксин WidgetsBinding объединяет SchedulerBinding и работу с деревом виджетов. Экземпляр берут через WidgetsBinding.instance после ensureInitialized.

Методы

Метод Описание
ensureInitialized Инициализирует связку с движком до первого кадра.
addPostFrameCallback Колбэк после отрисовки текущего кадра.
addObserver Регистрирует WidgetsBindingObserver.
removeObserver Снимает наблюдателя.

Пример

Давайте вызовем ensureInitialized и запустим приложение:

import 'package:flutter/material.dart'; void main() { WidgetsFlutterBinding.ensureInitialized(); runApp( MaterialApp( home: Scaffold( body: Center(child: Text('abcde')), ), ), ); }

На экране по центру появится строка 'abcde'.

Пример

Давайте поставим addPostFrameCallback после runApp:

import 'package:flutter/material.dart'; void main() { WidgetsFlutterBinding.ensureInitialized(); runApp( MaterialApp( home: Scaffold( body: Center(child: PostFrameLabel()), ), ), ); } class PostFrameLabel extends StatefulWidget { const PostFrameLabel({super.key}); @override State<PostFrameLabel> createState() => _PostFrameLabelState(); } class _PostFrameLabelState extends State<PostFrameLabel> { String text = '12345'; @override void initState() { super.initState(); WidgetsBinding.instance.addPostFrameCallback((_) { setState(() => text = 'abcde'); }); } @override Widget build(BuildContext context) => Text(text); }

На экране сначала '12345', после кадра текст сменится на 'abcde'.

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

  • миксин SchedulerBinding,
    который планирует кадры движка
  • миксин WidgetsBindingObserver,
    который слушает жизнь приложения
  • функция runApp,
    которая ставит корень дерева виджетов
  • константа kDebugMode,
    которая true в отладочной сборке
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить