Flutter. Много
2.77K subscribers
333 photos
23 videos
258 links
Заказать мобильную разработку: https://amiga.agency/?utm_source=tg
Заказать рекламу в канале @amiga_agency_bot

Новости Flutter-разработки, дайджесты мероприятий, личный опыт.
Download Telegram
Hola, Amigos!

А мы к вам с новой вакансией. В команду Amiga ищем рекрутера с опытом в IT от полугода. Самое важное — драйв и огонёк в глазах, который разжигается до кострища от новых задач🔥

Подробности по ссылке.
Все, кому откликается — пишите Кате @ekaterina_spesivykh.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Hola, Amigos!

Мы заняли 63 место в рейтинге лучших мобильных разработчиков России по версии Tagline 2023🏆

Это еще одна важная для нас победа. За 2 года на рынке мы попали в 2 самых главных рейтинга России по мобильной разработке. Без нашей крутой команды ничего бы не вышло, спасибо вам большое! А еще спасибо заказчикам за доверие. Такие достижения мотивируют расти и не останавливаться, значит, мы на верном пути.
🔥17🎉5🏆3👍1
Hola, Amigos!

Недавно вышла новая версия Flutter 3.10. Мы перевели статью одного из разработчиков Flutter и поделились ею на Habr. Почитать 1 часть можно тут. В ней мы рассказываем о новых и обновленных компонентах фреймворка. На следующей неделе выпустим вторую часть про изменения в веб-разработке на Flutter.
👍12🔥6
Пакеты, которыми мы часто пользуемся ч.1

Hola, Amigos! На связи вся команда Flutter в Amiga. Собрали список из must-have пакетов на Flutter, которые используем сами.

1. Пакет mask_text_input_formatter

Пакет mask_text_input_formatter используется для форматирования и проверки ввода текстовых полей на основе предопределенного шаблона маски. Он дает возможность принудительного применения определенного формата для пользовательского ввода, например номеров телефонов, номеров кредитных карт, дат и т. д.

Когда пользователь введет что-то в поле ввода, значение скорректируется автоматически: добавятся знаки препинания и тире, удалятся ненужные символы, обрежутся пробелы и изменится регистра слов.

Параметр "inputFormatter" в TextFormField или TextField позволяет разработчикам передавать список классов типа TextInputFormatter для определения поведения поля. TextInputFormatter преобразует значение поля в текст, а текст — в значение поля.

2. Пакет yandex_mapkit

Этот пакет используют для интеграции Яндекс-карт.
Ключевой плюс — большой спектр настроек карты, что позволяет сделать карту именно такой, какой вы хотите её видеть.

У yandex_mapkit есть список примеров в репозитории GitHub (ссылка на странице пакета), которые дают быстро освоить возможности пакета.

Также весомым плюсом является оптимизация пакета, карта будет хорошо работать даже при наличии нескольких сотен объектов карты (MapObject).

3. Пакет camera 0.10.5+2

В наше время сложно найти мобильное приложение, которое не взаимодействует с камерой устройства.
Вот единственный и незаменимый пакет по работе с камерой. Аналогов, покрывающих весь функционал пакета, действительно нет (мы искали).

Он пригодится, чтобы:
- получить live-stream c камеры;
- сделать запись видео;
- получить изображение с камеры;
- работать с выбранной камерой из доступных на устройстве.

Во второй части расскажем еще несколько незаменимых пакетов для нас.
🔥14👍5💩1
Hola, Amigos!

Выпустили вторую часть статьи о новой версии Flitter 3.10. В ней вы узнаете:

- об обновлениях в разработке веб и мобильных приложений;
- изменениях в движке Impeller;
- об улучшениях в API;
- за счет чего повысить производительность приложений на Flutter;
- об изменениях в устаревших функциях.

Читайте статью на Habr по этой ссылке. Если есть вопросы, задавайте их тут или в самой статье.
🔥13👍64
Пакеты, которыми мы часто пользуемся ч.2

Hola, Amigos! На связи вся команда Flutter в Amiga. Дополним наш список из must-have пакетов и виджетов на Flutter, которые используем сами.

1. Пакет cached_network_image

Если вы еще не используете cached_network_image в своих проекта, то пора начать это делать. Особенно, если у вас список с картинками.

Есть пара существенных плюсов для использования этого пакета:

- изображения сохраняются в файлы на устройстве;
- увеличивается скорость отображения изображений при повторном обращении.

2. Adaptive Scaffold

Adaptive Scaffold — это пакет от команды Flutter, который облегчает создание адаптивных макетов в приложениях. Он предоставляет набор виджетов и инструментов для создания макетов, которые могут адаптироваться к разным размерам экрана и ориентациям устройств.

Основная цель пакета Flutter Adaptive Scaffold — упростить разработку макетов, которые нужно адаптировать под разные платформы и устройства с неодинаковыми размерами экрана.

AdaptiveScaffold внутренне построен на AdaptiveLayout, но абстрагируется от некоторых сложностей с помощью пресетов, основанных на спецификации Material 3 Design.

3. Библиотека grouped_list

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

Вот пример использования библиотеки для группировки списка контактов по первой букве их имен:


import 'package:flutter/material.dart';
import 'package:grouped_list/grouped_list.dart';

class Contact {
final String name;
final String phoneNumber;

Contact({required this.name, required this.phoneNumber});
}

void main() {
runApp(MyApp());
}

class MyApp extends StatelessWidget {
final List<Contact> contacts = [
Contact(name: 'Alice', phoneNumber: '1234567890'),
Contact(name: 'Bob', phoneNumber: '9876543210'),
Contact(name: 'Charlie', phoneNumber: '5555555555'),
// Дополнительные контакты...
];

@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Grouped List',
home: Scaffold(
appBar: AppBar(
title: Text('Grouped List'),
),
body: GroupedListView<Contact, String>(
elements: contacts,
groupBy: (contact) => contact.name.substring(0, 1),
groupSeparatorBuilder: (String value) => Padding(
padding: const EdgeInsets.all(8.0),
child: Text(
value,
style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold),
),
),
itemBuilder: (context, contact) => ListTile(
title: Text(contact.name),
subtitle: Text(contact.phoneNumber),
),
),
),
);
}
}


В этом примере мы определяем список контактов и используем GroupedListView для создания списка, где контакты будут сгруппированы по первой букве их имен. groupBy принимает функцию, которая возвращает ключ группы для каждого элемента, и groupSeparatorBuilder используется для создания виджета, разделяющего каждую группу. itemBuilder определяет, как будет отображаться каждый элемент списка.

Это лишь пример использования "grouped_list" в Flutter, и библиотека предлагает и другие возможности для настройки и работы с группированными списками.
👍24🔥113
Hola, Amigos!

18 июня в Измайловском парке прошел самый крупный фестиваль спорта и ИТ RUNIT 2023. В этом году мы стали партнерами мероприятия и проводили свою спорт-активность — соревнования по прыжкам на скакалках. Каждому победителю вручали фирменный рюкзак с лого.

О том, как это было, листайте в фотоотчете🏅
🔥11👏54
Интеграция API во Flutter

Hola, Amigos!

Сегодня мы поговорим об интеграции API во Flutter. Давайте рассмотрим различные методы, которые позволяют обрабатывать сетевые запросы и ответы, обновлять пользовательский интерфейс.

1. Пакет HTTP
Наиболее распространенный подход к извлечению данных из API — использование пакета http, который предлагает простой и гибкий API для выполнения HTTP-запросов. Для начала вам нужно добавить пакет в файл pubspec.yaml:

dependencies:
http: ^0.13.4

После импорта пакета в свой проект можно использовать его для выполнения различных типов запросов: GET, POST, PUT и DELETE. Вот пример простого GET-запроса:

import 'package:http/http.dart' as http;

void fetchData() async {
var url = Uri.parse('https://api.example.com/data');
var response = await http.get(url);

if (response.statusCode == 200) {
// Successful response
var data = response.body;
// Process the data and update the UI
} else {
// Error handling
print('Request failed with status: ${response.statusCode}');
}
}

В этом примере определяется конечная точка API с помощью функции Uri.parse() и делается запрос GET с помощью http.get(). Затем ответ проверяется на наличие кода состояния.

2. JSON.

Чтобы использовать данные из API, обычно используют JSON. Flutter предоставляет библиотеки синтаксического анализа JSON, например, dart:convert, которые позволяют преобразовывать строки JSON в объекты Dart и наоборот. Вот пример разбора данных JSON:

import 'dart:convert';

void processData(String jsonString) {
var jsonResponse = json.decode(jsonString);
var title = jsonResponse['title'];
var description = jsonResponse['description'];
// Update the UI with the parsed data
}

В этом фрагменте применяется json.decode() для преобразования строки JSON в карту пар ключ-значение.

3. Ошибки с API.

В случаях, когда вызовы API завершаются сбоем или возникают исключения, понадобится способ работы над ошибками и отображения обратной связи пользователей. Flutter предоставляет широкий спектр компонентов пользовательского интерфейса, таких как Snackbars или Dialogs, для уведомления пользователей об ошибках и предоставления полезной информации.

Помните, что интеграция API во Flutter выходит за рамки простого поиска данных. Вы также можете отправлять данные в API, обрабатывать аутентификацию и авторизацию и взаимодействовать со службами RESTful, используя различные методы, заголовки и параметры запроса. Обязательно изучите документацию API, с которыми вы работаете, чтобы понять их конкретные требования и возможности.
🔥15👍6
Интеграция Firebase с Flutter, ч.1

Hola, Amigos!

В сегодняшнем посте мы поговорим о Firebase — что это такое и как может помочь в разработке приложений.

Firebase — это комплексная платформа от Google, в которой есть современные функции для разработки, перекомпоновки и улучшения приложений. Это набор инструментов, которые разработчики могут использовать при создании приложений в зависимости от своей потребности.

Цель Firebase заключается в решении трех основных проблем:

1. Быстро создать приложение.
2. Выпустить и обеспечить надежный мониторинг работоспособности.
3. Вовлечь пользователей.

Некоторые из популярных функций платформы Google Firebase включают в себя базы данных, аутентификацию, push-уведомления, аналитику, хранение файлов и многое другое.

Аутентификация Firebase

Аутентификация является важным аспектом многих приложений, и Firebase упрощает реализацию аутентификации пользователей. С помощью Firebase Authentication можно включать такие методы входа, как электронная почта/пароль, Google, Twitter и другие аккаунты. Firebase также дает возможности управления пользователями — сброс пароля и проверка электронной почты.

База данных Firebase в реальном времени

С помощью Firebase Real-time Database можно создавать приложения в режиме совместной работы в реальном времени. База данных NoSQL хранит и синхронизирует данные на нескольких устройствах, дает возможность просматривать изменения в данных и соответствующим образом обновлять пользовательский интерфейс. Благодаря усиленным правилам безопасности Firebase только авторизованные пользователи могут читать или писать в вашу базу данных.

Облачные сообщения Firebase

С помощью Firebase Cloud Messaging (FCM) можно взаимодействовать с пользователями. FCM позволяет отправлять push-уведомления в приложениях Flutter на устройствах iOS и Android. Можно ориентироваться на определенные устройства, сегменты пользователей или запускать уведомления на основе определенных событий.
🔥13👍7👌3💩1
Интеграция Firebase с Flutter, ч.2

Hola, Amigos! Продолжаем говорить о Firebase. Сегодня затронем облачное хранилище, а еще реализацию real-time чатов внутри приложения.

Облачное хранилище Firebase

Firebase Cloud Firestore — это гибкая и масштабируемая база данных документов NoSQL, которая дополняет возможности реального времени Firebase Real-time Database. Он предлагает структурированный подход к хранению данных. Cloud Firestore также предоставляет возможности запросов и автономную поддержку, что упрощает создание сложных приложений.

Внедрение чатов Firebase в реальном времени

Для реализации real-time чата можно использовать Firebase Realtime Database или Firebase Cloud Firestore.

С помощью Firebase Realtime Database или Firebase Cloud Firestore получится разработать структуру данных для хранения сообщений чата. Firebase автоматически оповещает подключенных клиентов, что позволяет мгновенно отображать новые сообщения в интерфейсе чата.

С помощью Firebase можно применять различные инструменты для аутентификации пользователей, хранения файлов (например, изображений), отправки уведомлений и других функций, которые могут быть полезны при разработке приложения чата.
🔥8👍73👌1
Hola, Amigos!

Отличная новость: нашей команде нужен новый герой! Мы ищем middle Flutter-разработчика, который обладает сильными техническими скилами. Мы растем в геометрической прогрессии, поэтому ждем драйвового спеца на новые мощные проекты как можно скорее!

Все подробности по ссылке. Пишите нашему рекрутеру Лизе по всем вопросам и для отклика на вакансию.
🔥6👍1
Hola, Amigos!

Для тех, кто c нами не так давно, сделали подборку полезных постов, которые вы точно не видели, а посмотреть стоит:

🦾 Кейс: что делать с большим APK-файлом?

Наш Flutter-dev Антон делится на примере из практики, как сократить вес APK-файла за 10 минут работы. Будет актуально тем, что часто работает с АРК-файлами.

🦾 Советы Junior-разработчикам

В посте вы прочитаете 9 классных советов для начинающих Flutter-разработчиков, которые помогут избежать типичных ошибок, подкачать скиллы и узнать что-то новое для себя. Must-read для джуниоров!

🦾 FlutterFlow.io

В посте Flutter-dev Саша рассказал о no-code конструкторе на базе Flutter, который поможет ускорить разработку кроссплатформенных приложений на iOS и Android.

🦾 Обзор используемых библиотек

Сделали обзор на 3 самыми используемыми в Amiga библиотеками для компиляции проекта: Dio, Flutter_bloс и Flutter_svg.

🦾 Работа с сокетами Dart

От Flutter-dev Саши вы узнаете, что такое сокеты и как работать с ними в Dart, а еще получите полезные материалы для изучения сокетов.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍43💅1