Почему эта статья появилась на свет
Привет! На связи мобильный Flutter разработчик. Если ты читаешь это, значит ты столкнулся с ситуацией когда необходимо подружить iOS виджеты с Flutter приложением.
Когда передо мной впервые встала эта задача, я черпал информацию из различных статей на английском, а теперь решил собрать все в одном (так еще и на русском)
Скажу сразу, разрабатывать будем без дополнительных библиотек + нужно будет иметь базовые знания в SwiftUI (нам как Flutter - разработчикам этот декларативный фреймворк не покажется сложным).
Реализация: пошаговый план действий
Теперь перейдем к делу. Весь процесс можно разбить на 2 основных этапа:
1. Создание Widget Target
Первым делом нам нужно создать новый target в iOS части нашего Flutter проекта. Widget Extension - это по сути отдельное мини-приложение, которое работает независимо от основного приложения.
Что делаем в Xcode:
Открываем iOS проект (ios/Runner.xcworkspace)
Добавляем новый target: File → New → Target → Widget Extension
Даем имя виджету (например, MyAppWidget)
В разделе Sign&Capabilities настраиваем App Groups для обмена данными между приложением и виджетом (Важно! Он должен быть идентичен настроенному в таргете основного приложения)
Теперь у нас сгенерировались основные файлы по умолчанию:
import SwiftUI
struct Provider: TimelineProvider {
func placeholder(in context: Context) -> SimpleEntry {
SimpleEntry(date: Date(), emoji: " 