Как стать автором
Обновить

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

Вторая статья за сегодня, к чему бы это? А как кстати приложение на Флаттере переживает смену ориентации смартфона?
Тут упомянуто. Виджеты перерисовываются, состояние (включая неявное, например положение скролла) — остаётся.
Тут тоже надо сохранять данные в бандл перед тем как активность будет уничтожена и извлекать при ее новом создании, или это делается как то иначе?

Flutter не поддерживает saveInstanceState. Он все просто держит в памяти до смерти процесса. При смерти процесса в фоне состояние потеряется.

А вот к примеру для разных экранов тоже не надо создавать отдельные файлы?
По желанию. Можно создавать, можно не создавать. Есть единая структура виджетов и даже то, что считать в нём экраном — можно менять. Например в приложении из примера я могу повесить навигатор на переключатель табов и в приложении кнопка «назад» будет путешествовать по истории переключения табов.
Я не так выразился, для разных размеров экранов?
И для разных размеров экранов тоже. Корневой виджет — приложение. Дальше мы хотим, например, для планшетов слева всегда показывать меню, а для смартфонов делать его условно отдельным экраном. Мы в отображении приложения проверяем ширину экрана и, в зависимости от неё, строим разные деревья виджетов.
Во Flutter нет ничего, похожего на концепцию активности.
Ух, прям праздник вчера был, аж 2 статьи про flutter.
Пробовал начать писать на нем приложение, заткнулся на том, что он не умеет навигацию хардварной клавиатурой, от слова совсем. Переключать фокус на другие элементы управления можно либо программно, либо тыкая в них пальцем.
Это бы ещё ничего, можно написать логику программно, но вот например для чекбокса вообще отсутствует понятие фокуса, соответственно его переключать можно только пальцем.
Вобщем, на этом и закончилось моё с ним знакомство, т.к. в той задаче нужна была как раз возможность навигации с клавиатуры.
Может позже сделают :)
Здесь сразу несколько мыслей:

1. В рамках философии Flutter, пользовательский интерфейс должен извлекать максимум из платформы. Так что поддержка клавиатурного ввода — это, скорее всего, будет отдельный набор виджетов. И вряд ли от разработчиков Flutter.

2. Сделать такой набор виджетов, на самом деле, не так трудно самому. Flutter предоставляет колоссальные возможности по их кастомизации, как в части внешнего вида, так и в части поведения.

3. Вообще это выглядит как не очень удачный выбор фреймворка. Flutter хорош для кросс-платформенной мобильной разработки. Если нужна разработка под конкретное устройство, да ещё и с нехарактерным для мобильных способом ввода — тут просится натив.
1. Нелогично делать отдельным набором, т.к. пользователь может, например, использовать приложение на ChromeOS или просто подключить Bluetooth-клавиатуру к смартфону.
Впрочем, там есть открытые тикеты: github.com/flutter/flutter/issues/1608 про общую навигацию, и github.com/flutter/flutter/issues/11344 про кнопки «Next» и пр. на экранной клавиатуре.
Просто, я так понимаю, ещё не дошли до реализации.

2. В теории да, но на практике там ещё возникает проблема с тем, чтобы перехватить, например, кнопку «Tab» в поле ввода — нужно отменить ввод символа и переместить фокус на следующее поле. С фокусом проблем никаких, а вот перехватить ввод символа на данный момент невозможно, получается что просто обернуть типовое поле ввода не получится, нужно делать своё.
Вобщем, реально, но слишком много работы получается.

3. Ну так в натив и ушел. Но опять-таки, как раз ничего нехарактерного как минимум для Android тут нет, всё очень даже стандартное — телефоны с аппаратными клавишами существуют, пусть и не особо популярны.
Беру свои слова назад. Возможность управления приложением с клавиатуры, оказывается — часть рекомендаций Google по accessibility, а значит должна быть реализована в обозримом будущем.
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории