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

Метод didChangeDependencies

Метод didChangeDependencies класса State срабатывает после initState и при каждом изменении наследуемых данных через dependOnInheritedWidgetOfExactType. Здесь безопасно читать Theme и MediaQuery.

Синтаксис

@override void didChangeDependencies()

Пример

Давайте сохраним цвет темы в didChangeDependencies:

import 'package:flutter/material.dart'; void main() { runApp( MaterialApp( theme: ThemeData(colorScheme: ColorScheme.fromSeed(seedColor: Colors.green)), home: Scaffold( body: Center( child: ThemeEcho(), ), ), ), ); } class ThemeEcho extends StatefulWidget { const ThemeEcho({super.key}); @override State<ThemeEcho> createState() => _ThemeEchoState(); } class _ThemeEchoState extends State<ThemeEcho> { Color? saved; @override void didChangeDependencies() { super.didChangeDependencies(); saved = Theme.of(context).colorScheme.primary; } @override Widget build(BuildContext context) { return Text('abcde', style: TextStyle(color: saved)); } }

На экране текст 'abcde' окрасится цветом, прочитанным в didChangeDependencies.

Пример

Давайте обновим подпись при смене локали:

import 'package:flutter/material.dart'; void main() { runApp( MaterialApp( home: Scaffold( body: Center( child: LocaleLabel(), ), ), ), ); } class LocaleLabel extends StatefulWidget { const LocaleLabel({super.key}); @override State<LocaleLabel> createState() => _LocaleLabelState(); } class _LocaleLabelState extends State<LocaleLabel> { String tag = '12345'; @override void didChangeDependencies() { super.didChangeDependencies(); tag = Localizations.localeOf(context).toString(); } @override Widget build(BuildContext context) { return Text(tag); } }

На экране didChangeDependencies подставит код локали вместо '12345'.

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

  • метод initState,
    который вызывается до didChangeDependencies
  • класс InheritedWidget,
    чьи изменения запускают didChangeDependencies
  • метод dependOnInheritedWidgetOfExactType,
    который регистрирует зависимость от предка
  • класс BuildContext,
    который доступен как context в State
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить