Forwarded from Flutter Friendly
Привет, это Катя, Flutter Dev Friflex. Сегодня поговорим о фреймворке gRPC и его реализации.
Что это?
gRPC — это фреймворк для удаленного вызова процедур (RPC), разработанный Google. Он использует HTTP/2 для транспорта и Protocol Buffers (protobuf) в качестве языка описания интерфейсов и формата сериализации данных.
Настройка и использование gRPC
1️⃣ Добавляем в pubspec.yaml:
2️⃣ Создаем файл .proto
Сделаем на примере создания чата. Определяем сервис в файле .proto. Например, lib/protos/chat.proto:
3️⃣ Генерируем код
Запускаем команду для генерации Dart-кода:
4️⃣ Создаем клиента
5️⃣ Используем клиента в приложении
На что следует обратить внимание:
🔸 gRPC клиент:
➡️ инициализируется один раз при создании состояния
➡️ обеспечивает двустороннюю коммуникацию
➡️ управляет подпиской на поток сообщений
🔸 Потоковая передача:
➡️ receiveMessages() возвращает Stream<Message>
➡️ listen() подписывается на новые сообщения
🔸 Управление ресурсами:
➡️ gRPC соединение должно закрываться
➡️ Отмена подписок происходит автоматически при dispose()
Продолжение — в комментариях📌
Что это?
gRPC — это фреймворк для удаленного вызова процедур (RPC), разработанный Google. Он использует HTTP/2 для транспорта и Protocol Buffers (protobuf) в качестве языка описания интерфейсов и формата сериализации данных.
Настройка и использование gRPC
dependencies:
grpc: ^4.1.0
protobuf: ^3.1.0
dev_dependencies:
protoc_plugin: ^21.1.2
Сделаем на примере создания чата. Определяем сервис в файле .proto. Например, lib/protos/chat.proto:
syntax = "proto3";
package chat;
service ChatService {
rpc SendMessage (Message) returns (MessageResponse);
rpc ReceiveMessages (Empty) returns (stream Message);
}
message Message {
string text = 1;
string sender = 2;
int64 timestamp = 3;
}
message MessageResponse {
bool success = 1;
string error = 2;
}
Запускаем команду для генерации Dart-кода:
bash
protoc --dart_out=grpc:lib/generated -Ilib/protos lib/protos/chat.proto
class GrpcClient {
late ChatServiceClient client;
/// Инициализация канала соединения
GrpcClient() {
final channel = ClientChannel(
'http://localhost',
port: 50051,
options: const ChannelOptions(
credentials: ChannelCredentials.insecure(),
),
);
client = ChatServiceClient(channel);
}
/// Отправка сообщения
Future<MessageResponse> sendMessage(String text, String sender) async {
final message = Message()
..text = text
..sender = sender
..timestamp = DateTime.now().millisecondsSinceEpoch;
try {
return await client.sendMessage(message);
} catch (e) {
print('Error sending message: $e');
return MessageResponse()..success = false..error = e.toString();
}
}
/// Получение сообщений
Stream<Message> receiveMessages() {
return client.receiveMessages(Empty());
}
}На что следует обратить внимание:
Продолжение — в комментариях
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7
У бота Flutter Observer количество активных пользователей превысило планку в 300 человек. Неплохо, неплохо. ☺️
Напоминаю, что есть тема в группе, где можно предлагать добавить функции, которые, вы считаете, были бы полезны сообществу. Также это сделать можно написать прямо в боте командой /send.
Напоминаю, что есть тема в группе, где можно предлагать добавить функции, которые, вы считаете, были бы полезны сообществу. Также это сделать можно написать прямо в боте командой /send.
👍5❤3
В Medium были найдены новые статьи о Dart ⭐️
- Dart in Google Summer of Code 2025
Информация от FlutterObserver_bot
- Dart in Google Summer of Code 2025
Информация от FlutterObserver_bot
Medium
Dart in Google Summer of Code 2025
We’re excited to announce that the Dart project will mentor contributors (for the sixth time!) in Google Summer of Code 2025.
Forwarded from Ringov | Flutter Bro
Где в Яндексе есть Flutter?
Недавно прошедший внутренний митап ознаменовал новую веху — в Яндексе появилось Flutter-комьюнити!
На митапе отлично повеселились, а заодно провели инвентаризацию команд, использующих Flutter — записывайте😯
1. Про — iOS | Android
2. Драйв — iOS | Android
3. Практикум — iOS | Android
4. Маршрутизация — iOS | Android
5. Афиша — iOS | Android
6. Авто.ру Бизнес — iOS | Android
7. Заправки — iOS | Android
8. Смена — iOS | Android
9. Маркет ПВЗ — iOS | Android
Ещё есть несколько мест, где Flutter встроен в Яндекс Go. Ну и на десерт. В десктопном Яндекс Браузере многие части UI — на Flutter😎
Ну чисто чтобы у вас не было сомнений по поводу количества продуктовых Flutter-команд в Яндексе☕️
Недавно прошедший внутренний митап ознаменовал новую веху — в Яндексе появилось Flutter-комьюнити!
На митапе отлично повеселились, а заодно провели инвентаризацию команд, использующих Flutter — записывайте
1. Про — iOS | Android
2. Драйв — iOS | Android
3. Практикум — iOS | Android
4. Маршрутизация — iOS | Android
5. Афиша — iOS | Android
6. Авто.ру Бизнес — iOS | Android
7. Заправки — iOS | Android
8. Смена — iOS | Android
9. Маркет ПВЗ — iOS | Android
Ещё есть несколько мест, где Flutter встроен в Яндекс Go. Ну и на десерт. В десктопном Яндекс Браузере многие части UI — на Flutter
Ну чисто чтобы у вас не было сомнений по поводу количества продуктовых Flutter-команд в Яндексе
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16👍6❤1
Forwarded from Flutter Friendly
This media is not supported in your browser
VIEW IN TELEGRAM
Привет, с вами Роза, Flutter Dev Friflex!
Когда только начинаешь разрабатывать на Flutter, многие возможности языка остаются незамеченными. А с опытом начинаешь глубже разбираться в деталях и повышать свою экспертность. С модификаторами классов у меня было так же: изначально в моем арсенале был лишь abstract... и все, наверное. А со временем я узнала и про sealed, и про base. Делюсь этим и с вами!
Зачем нужны модификаторы?
Модификаторы в Dart помогают управлять наследованием и доступностью классов. Они задают ограничения, предотвращают нежелательное расширение или, наоборот, определяют четкие правила для будущих реализаций.
Основные модификаторы:
🔸 abstract
Если вам не нужна реализация всех методов, а вы хотите создать класс-шаблон, используйте abstract.
🔴 Запрещает создавать экземпляры этого класса напрямую (new AbstractClass() не сработает).
🔴 Часто используется как базовый класс, определяющий интерфейс и частичное поведение для наследников.
🔸 base
Разрешает наследование (extends) и реализацию (implements), но только в пределах текущего пакета.
🔴 За пределами пакета base-класс нельзя реализовать (implements).
🔴 Полезно, если нужно предотвратить реализацию, но оставить возможность наследования.
🔸 interface
Принуждает использовать класс только через implements, запрещая наследование (extends).
Полезно, если хотите создать чистый контракт, без возможности переиспользовать реализацию.
🔸 final
Запрещает любое наследование (extends) или реализацию (implements) класса за пределами текущей библиотеки.
Гарантирует, что класс — конечная точка в иерархии. Его нельзя расширить или изменить поведение через подклассы вне вашего контроля.
🔸 mixin
Позволяет переиспользовать код без наследования.
🔴 Класс с mixin можно добавлять к другим классам через with.
🔴 Миксины не могут иметь конструкторов и не могут быть инстанцированы напрямую.
🔸 sealed
Позволяет создавать закрытый набор подтипов.
🔴 Все подклассы должны быть в той же библиотеке, что и sealed-класс.
🔴 Полезно для switch, так как компилятор проверяет, что все случаи учтены (exhaustiveness).
🔴 Отлично подходит для описания состояний (Loading, Success, Error), событий и других строго определенных иерархий.
Как использовать модификаторы?
Добавьте перед классом нужное ключевое слово. Например:
🔖 Важно! Модификаторы можно комбинировать (abstract base class), создавая тонкие правила для классов. Подробнее — в таблице в комментариях.
📎 Официальная документация по модификаторам
А какие модификаторы используете чаще всего? Делитесь в комментариях! 👀
Когда только начинаешь разрабатывать на Flutter, многие возможности языка остаются незамеченными. А с опытом начинаешь глубже разбираться в деталях и повышать свою экспертность. С модификаторами классов у меня было так же: изначально в моем арсенале был лишь abstract... и все, наверное. А со временем я узнала и про sealed, и про base. Делюсь этим и с вами!
Зачем нужны модификаторы?
Модификаторы в Dart помогают управлять наследованием и доступностью классов. Они задают ограничения, предотвращают нежелательное расширение или, наоборот, определяют четкие правила для будущих реализаций.
Основные модификаторы:
Если вам не нужна реализация всех методов, а вы хотите создать класс-шаблон, используйте abstract.
Разрешает наследование (extends) и реализацию (implements), но только в пределах текущего пакета.
Принуждает использовать класс только через implements, запрещая наследование (extends).
Полезно, если хотите создать чистый контракт, без возможности переиспользовать реализацию.
Запрещает любое наследование (extends) или реализацию (implements) класса за пределами текущей библиотеки.
Гарантирует, что класс — конечная точка в иерархии. Его нельзя расширить или изменить поведение через подклассы вне вашего контроля.
Позволяет переиспользовать код без наследования.
Позволяет создавать закрытый набор подтипов.
Как использовать модификаторы?
Добавьте перед классом нужное ключевое слово. Например:
sealed class GameState {
// ...
}А какие модификаторы используете чаще всего? Делитесь в комментариях! 👀
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
Обновил ботика FlutterObserver_bot до версии 0.2.1
- Обновление Telegram API до 8.3
- Теперь changelog отображается первым для быстрого перехода
- Оптимизация сервиса для отправки сообщений пользователем
- Исправление минорных ошибок
https://telegra.ph/Flutter-Observer-02-17
- Обновление Telegram API до 8.3
- Теперь changelog отображается первым для быстрого перехода
- Оптимизация сервиса для отправки сообщений пользователем
- Исправление минорных ошибок
https://telegra.ph/Flutter-Observer-02-17
Telegram
Flutter Observer
Track changes and updates in the Flutter and Dart repositories in real-time.
👍3
Ух, зашел в репозиторий по ресурсам Flutter и увидел, что ребята из Mad Brains сделали пулреквесты на оптимизацию и добавления чата Комьюнити Flutter-разработчиков от Mad Brains.
Прошу меня простить, что сразу не увидел. В дальнейшем буду периодически заходить смотреть пулреквесты )
В итоге:
- в список чатов на русском языке добавлен чат Комьюнити Flutter-разработчиков от Mad Brains;
- в список чатов на английском языке добавлен чат Комьюнити Flutter Guys.
- в список чатов на английском языке добавлен чат Flutter developers community.
Если кто-то еще знает интересные ресурсы по Flutter, пишите мне или сделайте пулреквест.
Отслеживать обновления в репозитории можно в боте @FlutterObserver_bot
Прошу меня простить, что сразу не увидел. В дальнейшем буду периодически заходить смотреть пулреквесты )
В итоге:
- в список чатов на русском языке добавлен чат Комьюнити Flutter-разработчиков от Mad Brains;
- в список чатов на английском языке добавлен чат Комьюнити Flutter Guys.
- в список чатов на английском языке добавлен чат Flutter developers community.
Если кто-то еще знает интересные ресурсы по Flutter, пишите мне или сделайте пулреквест.
Отслеживать обновления в репозитории можно в боте @FlutterObserver_bot
❤2
Каждый день в pub dev добавляются много новых пакетов. Когда бот присылает список, проходишься по всем, пытаешся понять. Бывают и интересные экземпляры.
Но бывают и такие пакеты. )))
@FlutterObserver_bot
Но бывают и такие пакеты. )))
@FlutterObserver_bot
😁7
В Qwen появилась возможность объединять модели), очень мощная штука стала. При этом, в отличии от GPT полностью бесплатная сетка.
🔥14👍3
Forwarded from Основы Flutter
🚨Обновление курса "Основы Flutter (в разработке)" 🥳
Мы наконец-то закончили последний раздел второй главы - "Скроллируемые виджеты" и он из книги перекочевала на степик 🫠
Последняя неделя выдалась для команды очень продуктивно и о том, что же мы такого наворотили - постепенно будем постепенно делиться с вами в этом канале 😎
Мы наконец-то закончили последний раздел второй главы - "Скроллируемые виджеты" и он из книги перекочевала на степик 🫠
Последняя неделя выдалась для команды очень продуктивно и о том, что же мы такого наворотили - постепенно будем постепенно делиться с вами в этом канале 😎
Please open Telegram to view this post
VIEW IN TELEGRAM
Stepik: online education
Основы Flutter: путь от Новичка до Профи
🔥 Хочешь стать Flutter-джедаем, но не знаешь, с чего начать?
Этот курс — твой билет в мир мобильной разработки! Здесь нет скучных лекций — только практика, тесты и реальный проект — Тетрис, который ты будешь прокачивать от версии v0 до полноценного приложения…
Этот курс — твой билет в мир мобильной разработки! Здесь нет скучных лекций — только практика, тесты и реальный проект — Тетрис, который ты будешь прокачивать от версии v0 до полноценного приложения…
👍1
Forwarded from Основы Flutter
🚨Обновление "Основы Flutter (в разработке)" 🥳
Добавлен сквозной проект для 5-й главы (Проект: Игра «Тетрис» v.5. Работа с сетью) 😎 В ходе него запилим работу с сетью, погрузимся в рефакторинг структуры проекта, а в качестве дополнительного челленджа – откажемся от использования сторонних библиотек и будем использовать исключительно инструменты от команды Flutter🤬
p.s. Это самый объемный раздел посвященный сквозному проекту 🫠
Добавлен сквозной проект для 5-й главы (Проект: Игра «Тетрис» v.5. Работа с сетью) 😎 В ходе него запилим работу с сетью, погрузимся в рефакторинг структуры проекта, а в качестве дополнительного челленджа – откажемся от использования сторонних библиотек и будем использовать исключительно инструменты от команды Flutter
p.s. Это самый объемный раздел посвященный сквозному проекту 🫠
Please open Telegram to view this post
VIEW IN TELEGRAM
Stepik: online education
Основы Flutter: путь от Новичка до Профи
🔥 Хочешь стать Flutter-джедаем, но не знаешь, с чего начать?
Этот курс — твой билет в мир мобильной разработки! Здесь нет скучных лекций — только практика, тесты и реальный проект — Тетрис, который ты будешь прокачивать от версии v0 до полноценного приложения…
Этот курс — твой билет в мир мобильной разработки! Здесь нет скучных лекций — только практика, тесты и реальный проект — Тетрис, который ты будешь прокачивать от версии v0 до полноценного приложения…
👍5
Юрий Петров | Flutter pinned «🚨Обновление "Основы Flutter (в разработке)" 🥳 Добавлен сквозной проект для 5-й главы (Проект: Игра «Тетрис» v.5. Работа с сетью) 😎 В ходе него запилим работу с сетью, погрузимся в рефакторинг структуры проекта, а в качестве дополнительного челленджа – откажемся…»
От Flutter Observer:
🎉 Потрясающие новости! Вышла новая версия Dart!
✅ Dart: 3.7.3
✅ Release date: 2025-04-16
✅ hash: 633eb6b87ec3c524c9f315e5dd15f82dc659cd88
🔗 Changelog
🔗 Breaking changes
🔗 Commit
🔗 Tag
Основное изменение: регресс производительности анализатора.
🎉 Потрясающие новости! Вышла новая версия Dart!
✅ Dart: 3.7.3
✅ Release date: 2025-04-16
✅ hash: 633eb6b87ec3c524c9f315e5dd15f82dc659cd88
🔗 Changelog
🔗 Breaking changes
🔗 Commit
🔗 Tag
Основное изменение: регресс производительности анализатора.
Telegram
Flutter Observer
Track changes and updates in the Flutter and Dart repositories in real-time.
👍5
Forwarded from Aurora Developers
## Flutter 3.27.3 для ОС Аврора
Обновление от сообщества развития Flutter для ОС Аврора!
Flutter для ОС Аврора получил обновление:
👉 Независимая инфраструктура и хранение зависимостей фреймворка на серверах ОМП
👉 Ключевые плагины добавлены в состав Flutter SDK
👉 Обновление Flutter на версию 3.27.3
👉 Публичный релиз плагина flutter_webview_aurora для использований web-функций в приложении
👉 Новые возможности плагина camera_aurora:
▫️Съемка видео
▫️Включение/выключение фонарика во время сьемки
👉 Фиксы багов и оптимизация работы Flutter
Текущая версия 3.27.3 и вы можете получить ее уже сейчас: https://developer.auroraos.ru/downloads/flutter/3.27.3.
Документацию и всё необходимое для разработки вы можете найти на нашем портале: https://developer.auroraos.ru/doc/extended/flutter.
#АврораОС #Flutter
@AuroraDevelopers
Обновление от сообщества развития Flutter для ОС Аврора!
Flutter для ОС Аврора получил обновление:
👉 Независимая инфраструктура и хранение зависимостей фреймворка на серверах ОМП
👉 Ключевые плагины добавлены в состав Flutter SDK
👉 Обновление Flutter на версию 3.27.3
👉 Публичный релиз плагина flutter_webview_aurora для использований web-функций в приложении
👉 Новые возможности плагина camera_aurora:
▫️Съемка видео
▫️Включение/выключение фонарика во время сьемки
👉 Фиксы багов и оптимизация работы Flutter
Текущая версия 3.27.3 и вы можете получить ее уже сейчас: https://developer.auroraos.ru/downloads/flutter/3.27.3.
Документацию и всё необходимое для разработки вы можете найти на нашем портале: https://developer.auroraos.ru/doc/extended/flutter.
#АврораОС #Flutter
@AuroraDevelopers
👍14