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

Класс RenderObject

Класс RenderObject стоит под виджетом в дереве элементов. Его возвращает findRenderObject, когда элемент уже прошёл раскладку. До первого кадра метод может вернуть null.

Синтаксис

context.findRenderObject()

Пример

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

import 'package:flutter/material.dart'; void main() { runApp(const Box()); } class Box extends StatefulWidget { const Box({super.key}); @override State<Box> createState() => _BoxState(); } class _BoxState extends State<Box> { var label = 'abcde'; final key = GlobalKey(); @override void initState() { super.initState(); WidgetsBinding.instance.addPostFrameCallback((_) { var object = key.currentContext?.findRenderObject(); if (object is RenderBox) { setState(() { label = object.size.width.toStringAsFixed(0); }); } }); } @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( body: Center( child: SizedBox( key: key, width: 40, child: Text(label), ), ), ), ); } }

После первого кадра на экране ширина блока, 40.

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

  • метод findRenderObject,
    который достаёт этот узел из контекста
  • класс BuildContext,
    место виджета в дереве
  • класс GlobalKey,
    через который берут контекст чужого виджета
  • виджет SizedBox,
    размер которого можно прочитать после раскладки
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить