More
Создание выпадающих меню в Flutter с данными из Back4app
11 мин
введение когда либо испытывали трудности с созданием динамических выпадающих меню в flutter? вы не одиноки! в этом руководстве мы проведем вас через создание выпадающего меню, которое получает свои варианты из бэкенда back4app это проще, чем вы могли подумать, и к концу у вас будет гибкое, основанное на данных выпадающее меню в вашем приложении flutter представьте, что вы создаете приложение для службы доставки пиццы доступные начинки могут часто меняться, поэтому жесткое кодирование их не идеально вот где полезно выпадающее меню, управляемое бэкендом! предварительные требования прежде чем мы начнем, убедитесь, что у вас есть учетная запись back4app (не волнуйтесь, регистрация бесплатна) и установлен flutter на вашем компьютере если вы новичок в flutter, ознакомьтесь с их руководством по установке о, и базовое понимание dart и виджетов flutter поможет, но мы проведем вас через сложные моменты! шаг 1 – настройка вашего бэкенда back4app давайте настроим наш бэкенд back4app не волнуйтесь, это не так страшно, как кажется! сначала войдите в свою учетную запись back4app нет учетной записи? не проблема! перейдите на back4app com https //www back4app com и зарегистрируйтесь – это бесплатно и быстро создайте новый проект бэкенда вы можете назвать его как нибудь креативно, например, 'awesomedropdowndata', или просто выбрать 'dropdownexample', если сегодня вы менее креативны теперь давайте создадим класс parse подумайте об этом как о специальной таблице для наших вариантов выпадающего меню мы назовем его 'options' (оригинально, правда?) добавьте столбец с именем optionvalue (string), чтобы хранить наши варианты выпадающего меню время добавить немного тестовых данных! давайте заполним наш класс 'options' несколькими вкусными начинками для пиццы пепперони грибы дополнительный сыр и последнее, но не менее важное, получите свой идентификатор приложения и ключ клиента из настроек проекта нам нужно будет это, чтобы подключить наше приложение flutter к back4app шаг 2 – настройка проекта flutter давайте создадим новый проект flutter откройте терминал, найдите уютное место для вашего проекта и выполните flutter create dropdown example теперь давайте добавим некоторые зависимости откройте pubspec yaml и добавьте эти строки dependencies flutter sdk flutter parse server sdk flutter ^3 1 0 # use the latest version available не забудьте выполнить flutter pub get для получения этих пакетов! теперь давайте скажем нашему приложению flutter, как общаться с back4app откройте lib/main dart и добавьте этот код не беспокойтесь, если это выглядит немного устрашающе – мы разберем это! import 'package\ flutter/material dart'; import 'package\ parse server sdk flutter/parse server sdk flutter dart'; void main() async { widgetsflutterbinding ensureinitialized(); const keyapplicationid = 'your back4app app id'; const keyclientkey = 'your back4app client key'; const keyparseserverurl = 'https //parseapi back4app com'; await parse() initialize(keyapplicationid, keyparseserverurl, clientkey keyclientkey, autosendsessionid true); runapp(myapp()); } class myapp extends statelesswidget { @override widget build(buildcontext context) { return materialapp( home dropdownmenuscreen(), ); } } не забудьте заменить 'your back4app app id' и 'your back4app client key' на ваши реальные учетные данные back4app это как секретное рукопожатие между вашим приложением и back4app! шаг 3 – создание выпадающего меню теперь самое интересное – давайте создадим наше выпадающее меню! вот код для нашего dropdownmenuscreen виджета это может показаться сложным, но мы разберем его по частям, обещаю! class dropdownmenuscreen extends statefulwidget { @override dropdownmenuscreenstate createstate() => dropdownmenuscreenstate(); } class dropdownmenuscreenstate extends state\<dropdownmenuscreen> { string? selectedoption; list\<string> options = \[]; bool loading = true; @override void initstate() { super initstate(); fetchoptions(); } future\<void> fetchoptions() async { final query = querybuilder\<parseobject>(parseobject('options')); final response = await query query(); if (response success && response results != null) { setstate(() { options = response results! map((e) => e get\<string>('optionvalue')!) tolist(); loading = false; }); } else { setstate(() { loading = false; }); } } @override widget build(buildcontext context) { return scaffold( appbar appbar(title text('pizza topping selector')), body loading ? center(child circularprogressindicator()) center( child dropdownbutton\<string>( value selectedoption, hint text('choose your topping'), items options map((string option) { return dropdownmenuitem\<string>( value option, child text(option), ); }) tolist(), onchanged (string? newvalue) { setstate(() { selectedoption = newvalue!; }); }, ), ), ); } } уф, это кусок кода! но не паникуйте – давайте разберем его по частям этот виджет выполняет несколько ключевых задач для нас он обращается к нашему бэкенду back4app и получает наш список опций подумайте об этом как о официанте, который приносит вам меню в ресторане пока он загружает данные, он показывает индикатор загрузки потому что никто не любит смотреть на пустой экран, верно? как только он получит опции, он отображает их в красивом выпадающем меню когда вы выбираете опцию, он запоминает ваш выбор круто, правда? и лучшая часть в том, что каждый раз, когда вы обновляете опции в back4app, ваше приложение автоматически покажет новый список при следующей загрузке магия! шаг 4 – запуск приложения время истины! запустите ваше приложение с помощью flutter run если все пройдет хорошо, вы должны увидеть выпадающее меню, заполненное начинками для пиццы, которые мы сохранили в back4app давайте, выберите начинку заметьте, как она обновляется мгновенно? это сила управления состоянием в flutter! лучшие практики для выпадающих меню с интеграцией бэкенда обработка состояний загрузки как вы видели в нашем примере, мы используем индикатор загрузки во время получения данных это как включить музыку, пока ваши гости ждут ужина – это просто улучшает впечатление! обработка ошибок в реальном приложении вы захотите добавить обработку ошибок что если интернет не работает? или back4app дремлет? всегда планируйте на случай неожиданностей! используйте пагинацию если ваш список выпадающих меню становится длиннее списка ингредиентов в пицце в стиле чикаго, подумайте о реализации пагинации ваши пользователи (и их устройства) будут вам благодарны заключение вы только что создали умное, управляемое бэкендом выпадающее меню в flutter! 🎉 почему бы не попробовать расширить этот пример? может быть, добавьте кнопку, которая добавляет выбранную начинку в заказ пиццы, или попробуйте отобразить варианты в другом компоненте пользовательского интерфейса небо – это предел! и помните, если вы застряли или у вас есть вопросы, сообщества flutter и back4app очень полезны не стесняйтесь просить о помощи! теперь идите и создавайте потрясающие, динамичные пользовательские интерфейсы! 💪 для получения дополнительной информации ознакомьтесь с документацией flutter https //flutter dev/docs и документацией back4app https //www back4app com/docs удачного кодирования!