TGViewer
Channel Public Channel
DartWay Ru | Flutter & Fullstack Dart

DartWay Ru | Flutter & Fullstack Dart

@dartway_dev_ru

Flutter и fullstack Dart в реальной разработке —
без занудства и ненужных абстракций.

Архитектура, практические приёмы, разборы кода.

Для Flutter-разработчиков, которые хотят увереннее чувствовать себя в реальных проектах

💬 @dartway_dev_ru_community
Subscribers
596
Photos
22
Videos
0
Links
36
Recent Posts 20 shown
Post #165 160
Новости DartWay

Я принял решение полностью отказаться от Serverpod, чтобы снять все ограничения для развития фреймворка и делать всё, как нужно и удобно, а не как сделал кто-то ещё))
Отказ прошел практически безболезненно - все пакеты были переделаны нейронками буквально за пару дней, ещё неделя ушла на перенос действующих проектов

Если говорить о качестве, то багов практически не было - все проекты запустились и работали корректно сразу после переноса на новую версию пакетов с первого раза.

В этой связи,
1 - старая инфа о фреймворке не сильно актуально - кодовая база и апи очень сильно изменились
2 - новая версия стала проще и удобнее

Думаю, что в течение октября я продолжу отладку на своих проетах, после чего смогу с чистой совестью пригласить вас также к использованию DartWay
  • 🔥 4
  • 👍 3
  • ❤ 2
Post #164 198
Dart MCP: что реально даёт ИИ-агенту

MCP-сервер встроен в Dart SDK с июля 2025 года. Подключил его к Claude Code на демо-приложении и посмотрел, что он даёт на практике.

Что агент и так умеет. Анализатор, тесты, dart fix, поиск пакетов на pub.dev. Всё это он без сервера делает через терминал.

Что новое. Работа с запущенным приложением: ошибки рантайма, дерево виджетов, нажатия и ввод через Flutter Driver, выполнение выражения прямо в работающем приложении. Агент сам находит overflow, чинит и делает hot reload. На большом приложении он может пройти по всем экранам и собрать ошибки вёрстки сам, а не по вашим скриншотам.

Цена. Описания 24 инструментов садятся в контекст каждой сессии и перечитываются на каждом шаге агента.

Держать сервер во всех сессиях — оверкилл. В DartWay подключим его как разовый инструмент: для прогона визуальных сценариев и починки вёрстки.


Подключение: claude mcp add --transport stdio dart -- dart mcp-server --enable all
Без --enable all половина инструментов выключена.

▶️ https://youtu.be/KRDMVBS_rig
YouTube Dart MCP: что реально даёт ИИ-агенту во Flutter Официальный Dart MCP-сервер уже есть в Dart SDK. Подключаем его к Claude Code на демо-приложении и честно разбираем, что он даёт агенту, а что и так делается через терминал. В выпуске: — что такое MCP и что идёт по проводу — какие инструменты есть у dart…
  • ❤ 6
  • 🔥 3
Post #163 223
Serverpod 4: обзор с комментариями

Вышел Serverpod 4, а вместе с ним App Studio. Сам я с Serverpod ухожу, но для fullstack на Dart он остаётся солидным выбором — так что разобрал обновление по пунктам.

Full-stack hot reload
База, сервер и Flutter-приложение поднимаются одной командой, любая правка — от модели до экрана — подхватывается на лету, и приложение не теряет состояние. Больше не нужно держать четыре терминала и перезапускать всё руками.
Удобно, но на мою работу почти не влияет. У меня много параллельных сессий с агентами в фоне, локальный стенд не запущен вообще — результат смотрю на тестовом стенде пару раз в день.


Postgres без Docker и MCP-сервер

Для локальной разработки есть встроенный Postgres — Docker не нужен. Встроенный MCP-сервер даёт агенту доступ к запущенному стеку: логи, миграции, работающее Flutter-приложение.
На хитрых багах пригодится, но глобальных проблем не решает: логи агенту и так доступны, и нехватку информации я встречаю редко.


Офлайн и база на клиенте

Те же модели и ORM теперь генерируют SQLite во Flutter, а одна строка database: sync включает двустороннюю синхронизацию с сервером.
Правильное направление, мы в DartWay тоже идём туда. Пока это экспериментальная версия, но со временем, думаю, доведут.


Future calls и общие модели

Фоновые задачи объявляются обычными Dart-методами, появились повторяющиеся. Модели можно вынести в отдельный пакет и делить между сервером и Flutter.
Общие модели — известная боль и одна из причин, по которой я ушёл с Serverpod. Теперь они есть и это разумный шаг.


Serverpod Cloud

Деплой бэкенда, базы и веб-приложения одной командой, от $5 в месяц. Фреймворк бесплатный, зарабатывают на хостинге — модель понятная.
Инфраструктуру агент сегодня разворачивает за пару промптов. А если не понимаешь, как устроен твой сервер, доверять его кому-то в любом случае стрёмно.


App Studio

Десктопное приложение, в котором уже есть Flutter, Dart и Serverpod. Своего ИИ внутри нет — подключаешь Claude Code, Cursor или любой другой агент. На выходе обычный проект, а не закрытая песочница, как у Lovable.
Настоящая разработка упирается не в настройку окружения. Прототип сделать легко — сложно становится, когда экранов и требований много и всё надо держать согласованным, а окно чата рядом с готовым приложением здесь не помогает. Как и сам Serverpod: он даёт по инструменту на задачу, но связывать их в архитектуру приходится самому, иначе проект превращается в кашу.

Почему я ухожу с Serverpod — расскажу в ближайшие дни.

▶️ https://youtu.be/HL9ja3EwXzY
YouTube Serverpod 4 и App Studio: обзор обновления с комментариями Вышел Serverpod 4 и App Studio. Смотрю, что они обещают, и разбираю, что из этого реально нужно, когда код пишет ИИ-агент. Таймкоды я расставил по кадрам, а не по речи, так что проверь: 0:00 Зачем обзор, если мы уходим с Serverpod 1:19 Full-stack hot reload…
  • 🔥 3
  • ❤ 2
Post #162 437
Flutter 3.47: что сломается и что делать до ноября

Записал разбор — первый выпуск новой серии на YouTube.

Лето дало один стабильный релиз: 3.45 и 3.46 в stable не выходили вовсе, а 3.47 приехал 12 августа сразу с 1358 коммитами сверх 3.44. Главное в нём — не фичи, а переупаковка: material и cupertino уехали из SDK в отдельные пакеты.

Сегодня ничего не горит. Проверил на живом проекте: переезд с 3.44 на 3.47 даёт чистый flutter analyze и зелёные тесты, библиотеки внутри SDK на месте и без пометок. Депрекейт назначен на ноябрьский релиз — вот там и начнётся.

Миграция — одна команда, но с двумя граблями:
dart fix --apply --code=migrate_design_widgets


Просто dart fix --apply её не сделает — код нужно указывать явно.
И в pubspec она впишет material_ui: any, что стоит сразу поправить на каретку с версией.

«ChangeNotifier вынесли из SDK в package:listen» — сегодня это неправда. В 3.47.2 классы на месте и не помечены deprecated, а listen — вторая независимая реализация тех же имён. Типы несовместимы: отдадите listen-овский ValueNotifier во ValueListenableBuilder — получите ошибку компиляции. Пакет годится для кода без Flutter: сервер, CLI, общая логика.

Primary constructors в Dart 3.13 сами не включатся — без sdk: ^3.13.0 в pubspec будет experiment_not_enabled даже на нужном SDK. И честно: экономия бойлерплейта заметно теряет в цене, когда его пишет не человек.

Остальное — Impeller по умолчанию на десктопе, iOS 15 и macOS 12, Wasm — в видео.

https://youtu.be/kNXMVEj_7bA
  • 🔥 5
  • ❤ 2
  • 👍 1
  • 🤔 1
  • 🆒 1
Post #161 389
  • 👨‍💻 1
Post #160 367
Релиз DartWay, 3 сентября

За 10 дней: 47 пул-реквестов, закрыто 39 issue, 7 500 строк кода в 116 файлах. Опубликовано 17 пакетов — шесть из них впервые.

Главные нововведения:
1. Модуль оффлайн загрузки - для аудио и видео файлов


Это не просто локальное хранилище данных - это комплексная система управления загрузкой контента на устройство. Функционал обкатывается на одном из наших проектов и теперь доступен в рамках фреймворка.

Подключение — одна строка:
dw = DwCore<Client, UserProfile>(
plugins: [DwOfflinePlugin(config: offlineConfig)],
);


Код фич при этом не меняется: запись остаётся dw.repo.saveModel(...), чтение — ref.watch(dw.repo.modelList<X>()). Плагин встаёт локальным хранилищем, через которое dw.repo и так ходит. Ядро от него не зависит — не просил офлайн, не несёшь его.

2. Модули подключения пуш уведомлений для flutter приложения

Ранее был опубликован только серверный модуль, теперь же выходит и флаттер часть

dartway_push_flutter и транспорты _firebase / _rustore — первая публикация.
В _flutter нет вендорного SDK: транспорт подключается отдельным пакетом, и приложение не тащит Firebase, если ему нужен RuStore.

Также в обновление вошло множество исправлений, оптимизаций и уточнений по документации и AI скиллам
  • 👍 2
  • ❤ 1
  • 🎉 1
Post #159 340

Forwarded from AI-native разработка · Новиков

Что такое AI-native разработка на самом деле

Все, кто внедрил агентов в разработку, ждали кратного ускорения, но не получили его.
Причина не в моделях. Причина в том, что автоматизировали одно звено из четырёх —
написание кода — а разработка состоит далеко не только из него.

Вот четыре звена, без которых AI-native не работает.

1. Захват задач

Задачи не приносит человек. Они приходят сами: из логов, из чатов поддержки,
из диалогов с пользователями, из наблюдений в ходе выполнения предыдущих задач...

Агент читает поток, сверяется с документацией и кодовой базой, задаёт уточняющие вопросы и предлагает варианты решения.

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

2. Реализация

Ключевое слово — не «написать», а «по канону проекта». Агент сначала планирует,
разбирает альтернативы и выбирает решение, и только потом пишет.

И вот главное: канон должен существовать. Если в проекте нет зафиксированных
архитектурных решений, агенту не с чем сверяться — он напишет какой-то рабочий код, а через месяц у вас пять разных способов делать одно и то же.
Отсюда и берётся слоп: не от плохих моделей, а от отсутствия канона.

Сюда же — синхронизация с документацией в момент изменения. Не «потом
задокументируем», а тем же движением. Иначе расхождения плодятся с невероятной скоростью.

3. Интеграция

Результат должен доехать: целевая ветка, тестовый сервер, продуктив. По дороге —
код-ревью, тесты, пользовательская приёмка.

На каждом этапе агент делает свою часть и проталкивает мяч дальше. Не ждёт,
пока человек вспомнит. Работа, застрявшая между «сделано» и «выкачено», —
это работа, которой нет.

4. Профилактика

Про это забывают чаще всего. Раз в неделю агенты идут в код на глубокий анализ:
неоптимальные решения, отступления от архитектуры, места под рефакторинг.

И самое важное — результат этого анализа вместе с решениями человека
превращается в обновлённые архитектурные инструкции. То есть возвращается
в пункт 2 как новый канон.

Почему это цикл, а не конвейер

Четвёртое звено кормит второе. Первое питается тем, что третье выкатило в прод.
Это замкнутая петля: чем дольше она крутится, тем точнее становится канон
и тем меньше требуется человека.

И главный закон

Автоматизация мгновенно вскрывает следующее бутылочное горлышко.

Ускорили написание кода — упёрлись в то, что задачи ставит человек. Решили
захват — упёрлись в то, что ничего не доезжает до прода. Наладили интеграцию —
обнаружили, что архитектура плывёт, потому что профилактики нет.

Поэтому кратный прирост даёт не глубокая проработка одного звена, а проработка
всех четырёх хотя бы в первом приближении. Идеальный первый пункт при мёртвом
третьем не даёт ничего.

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

А у вас какое звено сейчас узкое?
  • ❤ 3
  • 👍 3
Post #158 469
Всем привет,
записал второе видео обучающее
- добавление фичи, её структура
- конфигурации на бэкенде

Ссылка на видео: https://youtu.be/LJXTRkJLWS4
Закрытый чат для вопросов: https://t.me/+f9JjgN6rHNg0MTFi

Также по субботам В 12:00 МСК провожу открытые вебинары - отвечаю на вопросы, помогаю разобраться.
YouTube Основы DartWay #2 - добавление фичей Ставлю Claude Code задачу на ленту постов в приложении на DartWay: отдельный экран и пункт в нижнем меню, публикация с текстом до 300 знаков и картинкой, лайки и дизлайки одним нажатием, мгновенное обновление у всех пользователей. Разбираем, что получилось…
  • 🔥 2
Post #157 688
Post #156 608
Открытое обучение DartWay!

Я пропал на какое-то время - много делал по фреймворку и думал, как двигаться дальше

Признаю свою ошибку - пытался преподнести вам обучение DartWay как платный продукт

Вместо этого открываю бесплатную программу обучения

Бегать за каждым с ложкой не буду, но помогу во всем разобраться

Кому интересно освоить full stack dart - вступайте в чатик https://t.me/+f9JjgN6rHNg0MTFi

Первая встреча завтра в 12:00 МСК и далее также по субботам
Telegram DW Circle Evgenii Novikov invites you to join this group on Telegram.
  • 🔥 3
  • ❤ 2
Post #154 865
На сайте DartWay появилась карта компетенций по 6 областям
Каждая статья - несколько ключевых принципов, вопросы и задания для самопроверки и ссылки на интересные источники

https://dartway.dev/ru/learn

Буду признателен за обратную связь🙏🏻

Открыт к запросам на доработку.
Как вариант, могу прикрутить комментарии прямо туда - чтобы там обсуждать
  • 🔥 6
  • ❤ 2
Post #153 822
Guard, которого не было

(пробую новый тип контент - разбор конкретных кейсов из сегодняшнего дня, пишите в комментариях как вам)

Лента постов слала на сервер под 180 запросов в секунду при скролле. В логах — 3115 ошибок дубликата уникального ключа в сутки, до 89 отказов на одну пару (пользователь, пост).

Защита от повторов в коде была. Выглядела безупречно:
@Riverpod()                       // autoDispose по умолчанию
class ContentViewState extends _$ContentViewState {
late final _pendingViews = <int>{};

void viewPost(int postId) {
if (_pendingViews.contains(postId)) return; // не шлём дважды
_pendingViews.add(postId);
// ...saveModel
}
}


Вызывали её так — и только так, во всех трёх местах:
ref.read(contentViewStateProvider.notifier).viewPost(postId);


Вот здесь всё и ломается. Провайдер никто не watchил.
@Riverpod() — это autoDispose. Такой провайдер живёт ровно столько, сколько у него есть слушатели. А ref.read слушателя не создаёт: провайдер поднимается, отдаёт нотифаер и уничтожается в том же цикле событий.

Следующий кадр — новый инстанс нотифаера. _pendingViews это поле инстанса, у нового оно пустое. Листенер скролла дёргается на каждом кадре по каждому видимому посту, то есть гвард обнулялся шестьдесят раз в секунду и не отсекал ничего.
Код при этом читается как рабочий. На ревью такое не видно: и гвард корректный, и вызов корректный — неверна только связка.
Состояние, которое должно пережить виджет, обязано лежать в провайдере, который переживает виджет. ref.read(provider.notifier) без единого watch — это не «взять существующий», а «создать, использовать и выбросить».


Лечится переносом состояния туда, где оно живёт всю сессию:
@Riverpod(keepAlive: true)
PostViewTracker postViewTracker(Ref ref) => PostViewTracker(...);


Как проверить себя за минуту:
если храните состояние в поле нотифаера — найдите хоть один watch этого провайдера. Не нашли ни одного — значит состояния у вас нет.

ПС. я бы сказал, что это интересный пример, почему не стоит злоупотреблять кодогенерацией - riverpod по умолчанию фигачит всё autoDispose, лучше осознанно это писать, мне кажется
  • ❤ 2
Post #152 657
Экспериментируем с внесением документации прямо в код виджетов для некоторых целей
- просмотр спецификаций в процессе тестирования
- формирование информативных логов

Как думаете, перспективно?
  • 👍 2
Post #151 532

This post (sticker, poll or similar) has no web preview. Open in Telegram

  • ❤ 1
  • 🔥 1
Post #150 413
Краткий апдейт - планы по запуску обучения откладываю в долгий ящик, потому что очень мало заявок))

В ближайшее время сосредоточусь на публичных релизах и видео гайдах по dartway.
  • 👍 2
  • 🔥 1
Post #149 564
Неделя в DartWay — что уехало в master

Семь дней, плотный дифф. Коротко по фронтам:

🔒 Безопасность CRUD. Закрыли обход rate-limit и срока жизни OTP — createdAt теперь ставит сервер, а не клиент. Save-ошибки перестали протекать деталями БД наружу. Добавили pre-insert хук авторизации на выдачу auth-ключей.

📡 Реалтайм устойчивее. Стриминг-сессии корректно освобождаются, подписки на каналы переживают реконнект — руками переподписываться после обрыва больше не надо.

⚙️ CRUD мощнее. Row-lock на сохранение (LockMode.forUpdate) — атомарные апдейты без сырого SQL. Save-хуки теперь умеют отклонять запись.

🔔 Push из коробки. Новый опциональный модуль dartway_push: хранилище device-токенов, отмена доставки, привязанная к источнику. Ядро его не тянет — подключаешь, когда нужно.

🧩 Одна точка данных на клиенте. dw.repo — весь доступ к данным приложения через один корень.

Плюс: перешли на Serverpod 3.4.11 с полной регенерацией, вычистили шаблон нового проекта (F5 в VS Code — и проект бежит).

Направление одно: DartWay собирается стать самым мощным инструментом для сборки приложений на Dart. Каждую неделю — ощутимо ближе.
  • ❤ 2
  • 🔥 1
Post #148 500
Собираю мини-группу - AI-fullstack на Dart

В каждом опросе вы отмечали темы AI и fullstack как самые актуальные и интересные для вас. Что ж, я согласен.

Давайте попробуем развить эти компетенции.
Собираю небольшую экспериментальную группу — протестировать формат обучения.

Формат практический: 4 вебинара + домашки + код-ревью + обсуждение в чате.
Всего 5-6 недель плотной работы.

Целевой результат - работающее MVP с живыми пользователями

Сразу скажу - это только для тех, кто готов реально что-то делать.
У меня нет желания сотрясать воздух просто так))

Стоимость участия
Early-bird - до 26 июля - $249 = 19 900 рублей
Standard - $299 долларов = 23 900 рублей
VIP - с индивидуальным сопровождением +$200 или 16000 рублей

Мест всего 8. Одно уже занято.))

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

Анкета: https://forms.gle/Jy2F1xCa1rkkQkW79
Google Docs Заявка на участие в обучении For english - please, contact me directly @eu_novikov on Telegram AI-fullstack - практический курс про создание fullstack приложений используя Flutter, Dart и современные AI инструменты. 4 вебинара + плотные ДЗ с обратной связью и код-ревью. Материал —…
  • 🔥 4
  • ❤ 1
Post #147 646
«Будущее уже наступило, просто оно неравномерно распределено» — любимая фраза Оскара Хартмана.

С приходом AI она актуальна как никогда: всё меняется так стремительно, что от этой неравномерности ловишь кринж на каждом шагу.

Пока одни запускают и растят успешные стартапы в режиме 100% AI-кода — другие спрашивают в телеграм-чате по Flutter, как сделать DropdownMenu или задать размер TextField🙈

Лол, хватит!)

Для меня очевидны три вещи:
— бóльшую часть большинства задач будет делать AI
— человек останется носителем глубокой экспертизы и ответственности
— продуктовые команды схлопнутся до 1-2 человек

Применительно к Flutter это неизбежно ведёт к новой роли — AI-fullstack Dart-архитектор. Человека, способного спроектировать, создать и развивать продукт, опираясь на AI-инструменты.

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

Относите себя к таким?
  • 👍 5
  • 👎 2
  • ❤ 1
  • 🔥 1
Older posts →

About this channel

How can I read @dartway_dev_ru without a Telegram account?
TGViewer shows the public web preview Telegram publishes for DartWay Ru | Flutter & Fullstack Dart: recent posts, photos, videos and the subscriber count, with no app, login or account.
How many subscribers does DartWay Ru | Flutter & Fullstack Dart have?
DartWay Ru | Flutter & Fullstack Dart (@dartway_dev_ru) has 596 subscribers on Telegram, refreshed roughly every 30 minutes.
Does DartWay Ru | Flutter & Fullstack Dart know I viewed it here?
No. Public channel previews carry no viewer identity, and TGViewer has no accounts or tracking of what you look up.
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →