Можете ли вы установить клавиши флаттера для виджетов после построения дерева?

#flutter #dart #flutter-layout #flutter-test

Вопрос:

Я проводил исследование ключей флаттера, и, насколько я вижу, у меня нет возможности гарантировать, что ключи виджета останутся одинаковыми во всех отладочных сборках, если ключ не был назначен при создании этого виджета.

Я ищу какие-либо ресурсы для управления деревом виджетов, назначая ему ключи или перестраивая элемент и предоставляя ему новый ключ.

Цель состоит в том, чтобы на экране появилось наложение, вы нажимаете на элемент виджета, даете ему имя, и в следующий раз, когда я запущу приложение (только в режиме отладки), оно должно иметь это имя в качестве ключа.

Я не знаю, возможно ли это, но если у кого-то есть некоторый опыт работы с деревом виджетов, я был бы признателен за любые рекомендации по этому вопросу. Я могу получить доступ к дереву через

 WidgetsBinding.instance?.renderViewElement
 

И пройти через это. Но есть ли какой-нибудь способ, которым я могу сделать одно из следующих:

  • Динамически назначайте ключ виджета виджету в дереве элементов
  • Напишите мой собственный конструктор дерева виджетов / конструктор дерева элементов (я бы скопировал существующий flutter и внес небольшие изменения)

Комментарии:

1. Я не думаю, что это возможно. Почему бы вам просто не перестроить виджет с помощью нового ключа?

2. @intraector Это означает, что мне все еще нужно перейти к каждому виджету в каждом представлении для каждой базы кода и добавить ключ. Я пытаюсь этого избежать. Это отнимает очень много времени. И нам приходится делать это для многих кодовых баз, которые мы не писали. С тысячами виджетов.

3. А, понятно. К сожалению, это невозможно. Единственный вариант, который я имею в виду, — полнотекстовый поиск и замена, добавление ключа в каждый конструктор. Но это опасно и в некоторых случаях невозможно выполнить.

4. @intraector Я ценю этот комментарий. Я не думал об инструменте «вне» flutter, который помог бы нам в этом.