Миксин 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 в отладочной сборке