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

Метод findRenderObject

Метод findRenderObject класса BuildContext даёт доступ к объекту компоновки и отрисовки текущего элемента. До первого кадра может вернуть null. Размер и положение читают у RenderBox после монтирования.

Синтаксис

RenderObject? findRenderObject()

Пример

Давайте прочитаем ширину Text после layout:

import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; void main() { runApp( MaterialApp( home: Scaffold( body: Center( child: SizeReporter(), ), ), ), ); } class SizeReporter extends StatefulWidget { const SizeReporter({super.key}); @override State<SizeReporter> createState() => _SizeReporterState(); } class _SizeReporterState extends State<SizeReporter> { String label = 'abcde'; @override void initState() { super.initState(); WidgetsBinding.instance.addPostFrameCallback((_) { final ro = context.findRenderObject(); if (ro is RenderBox) { setState(() => label = '12345 ${ro.size.width.toStringAsFixed(0)}'); } }); } @override Widget build(BuildContext context) { return Text(label); } }

На экране findRenderObject допишет ширину к '12345' после кадра.

Пример

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

import 'package:flutter/material.dart'; void main() { runApp( MaterialApp( home: Scaffold( body: Center( child: Builder( builder: (context) { WidgetsBinding.instance.addPostFrameCallback((_) { final ro = context.findRenderObject(); print(ro.runtimeType.toString().contains('Render')); }); return const Text('abcde'); }, ), ), ), ), ); }

Результат выполнения кода

true

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

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