Основное направление, на которое указывает документация Flet, — это использование UserControls при попытке создания пользовательских виджетов/элементов управления. Сам UserControl наследует от Stack, а также имеет метод сборки, который можно использовать для возврата чего-то отличного от Stack.
Но если да, то почему бы просто не наследовать, скажем, от Контейнера? Код, который я использую, таков:
class ArrowButton(Container):
def __init__(self, arrow_icon: Icons):
super().__init__(
height=100,
width=100,
bgcolor=Colors.WHITE,
border_radius=500,
content=Icon(
name=arrow_icon,
size=100,
color=Colors.BLACK,
)
)
Я также могу добавить методы для изменения состояния, поэтому не понимаю, зачем мне конкретно нужен UserControl + его метод сборки. Фактически, у меня есть другой проект, в котором я создал собственную систему вкладок (похожую на веб-браузер), где все пользовательские классы (их 4) наследуются от Container, и все работает точно так, как задумано.
Итак, да, какая цель/вариант использования потребует использования UserControl вместо какого-либо другого виджета? Есть ли какой-то специфический для Flutter нюанс, который мне здесь не хватает?






Вы абсолютно правы! :) Собственно, именно по этой причине мы пометили его как «устаревший» в v0.21.0 и скоро он будет удален в v0.26.0
Мы также обновили раздел документации, посвященный созданию пользовательских элементов управления во Flet: https://flet.dev/docs/getting-started/custom-controls