More
Как оптимизировать асинхронные операции в Flutter с помощью Future.wait и Back4app
7 мин
введение асинхронное программирование имеет важное значение в современном разработке приложений, особенно при работе с задачами, такими как получение данных из нескольких источников или выполнение нескольких сетевых запросов однако эффективное управление несколькими асинхронными вызовами может быть сложной задачей в flutter метод future wait предоставляет мощный способ управления несколькими futures , позволяя вашему приложению ожидать несколько асинхронных операций одновременно и эффективно в этом учебном пособии вы узнаете, как использовать future wait в flutter для оптимизации производительности вашего приложения при работе с несколькими асинхронными задачами мы интегрируем эту технику с back4app, где вы можете выполнять параллельные запросы данных из вашего бэкенда, хранить результаты и значительно сократить время ожидания для ваших пользователей предварительные требования чтобы завершить это учебное пособие, вам потребуется учетная запись back4app зарегистрируйтесь для получения бесплатной учетной записи на back4app com https //www back4app com настроенная среда разработки flutter на вашем локальном компьютере следуйте руководству по установке flutter https //flutter dev/docs/get started/install если вы еще не настроили ее базовые знания асинхронного программирования в flutter и как использовать back4app в качестве сервиса бэкенда если вы новичок в back4app, ознакомьтесь с руководством по началу работы с back4app https //www back4app com/docs/get started/welcome шаг 1 – настройка вашего back4app бэкенда создайте проект back4app войдите в ваш аккаунт back4app https //dashboard back4app com/ и создайте новый проект создайте классы parse в вашем проекте back4app создайте два новых класса parse с именами task и project класс task должен иметь поля name (string) и completed (boolean) класс project должен иметь поля title (string) и description (string) добавьте образцы данных заполните эти классы образцами данных, которые мы будем извлекать одновременно с помощью future wait в нашем приложении flutter получите свои учетные данные back4app перейдите в настройки вашего проекта, чтобы получить ваш application id и client key, которые вам понадобятся для подключения вашего приложения flutter к back4app шаг 2 – настройка вашего проекта flutter создайте новый проект flutter откройте ваш терминал или командную строку и выполните добавьте зависимости откройте pubspec yaml и добавьте следующие зависимости инициализируйте parse в вашем приложении в lib/main dart , импортируйте sdk parse и инициализируйте его в функции main 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()); замените 'your back4app app id' и 'your back4app client key' на ваши фактические учетные данные back4app шаг 3 – получение данных одновременно с помощью future wait создайте виджет taskprojectscreen в lib/main dart , добавьте новый виджет, который будет одновременно получать данные из классов task и project class taskprojectscreen extends statefulwidget { @override taskprojectscreenstate createstate() => taskprojectscreenstate(); } class taskprojectscreenstate extends state\<taskprojectscreen> { list\<parseobject>? tasks; list\<parseobject>? projects; string? errormessage; @override void initstate() { super initstate(); fetchdata(); } future\<void> fetchdata() async { try { // fetch tasks and projects concurrently final futures = \[ gettasks(), getprojects(), ]; final results = await future wait(futures); setstate(() { tasks = results\[0] as list\<parseobject>; projects = results\[1] as list\<parseobject>; }); } catch (e) { setstate(() { errormessage = e tostring(); }); } } future\<list\<parseobject>> gettasks() async { final query = querybuilder\<parseobject>(parseobject('task')); final response = await query query(); if (response success && response results != null) { return response results as list\<parseobject>; } else { throw exception('failed to load tasks'); } } future\<list\<parseobject>> getprojects() async { final query = querybuilder\<parseobject>(parseobject('project')); final response = await query query(); if (response success && response results != null) { return response results as list\<parseobject>; } else { throw exception('failed to load projects'); } } @override widget build(buildcontext context) { if (errormessage != null) { return center(child text('error $errormessage')); } if (tasks == null || projects == null) { return center(child circularprogressindicator()); } return listview( children \[ listtile(title text('tasks')), tasks! map((task) => listtile( title text(task get\<string>('name') ?? 'no name'), subtitle text('completed ${task get\<bool>('completed') ? 'yes' 'no'}'), )), listtile(title text('projects')), projects! map((project) => listtile( title text(project get\<string>('title') ?? 'no title'), subtitle text(project get\<string>('description') ?? 'no description'), )), ], ); } } этот виджет получает задачи и проекты одновременно с помощью future wait , сокращая общее время ожидания, обрабатывая оба запроса одновременно шаг 4 – тестирование и запуск вашего приложения запустите ваше приложение с помощью flutter run вы должны увидеть список задач и проектов, отображаемых на экране оба набора данных извлекаются одновременно, что делает процесс получения данных быстрее и эффективнее заключение в этом учебном пособии вы узнали, как использовать future wait для оптимизации асинхронных операций в вашем приложении flutter извлекая данные из нескольких источников одновременно и интегрируясь с back4app, вы сделали ваше приложение более отзывчивым и сократили общее время ожидания для ваших пользователей использование future wait в сочетании с надежным бэкендом, таким как back4app, позволяет вам эффективно управлять несколькими асинхронными задачами и улучшать производительность ваших приложений flutter для получения дополнительной информации о использовании back4app с flutter, ознакомьтесь с документацией back4app по flutter https //www back4app com/docs/flutter/overview удачного кодирования!