TGViewer
Flutter Friendly Flutter Friendly @flutterfriendly · 995 subscribers
Post #179 828
🗣️Привет, это Роза, Flutter Dev Friflex!

Если вы хоть раз думали о том, как открывать ссылки на Flutter, то точно видели пакет url_launcher. Но знаете ли вы, что его возможности этим не ограничиваются?

С помощью этого плагина можно:
✔️ Открывать URL-ссылки во внешнем браузере или прямо внутри приложения
✔️ Запускать почтовый клиент с уже заполненным письмом
✔️ Совершать звонки прямо из приложения
✔️ Открывать мессенджеры и другие приложения с поддержкой кастомных URL-схем

url_launcher – это плагин Flutter, предназначенный для взаимодействия с внешними приложениями с помощью стандартных URL-схем:  
tel:, mailto:, https:, sms:
и других.

➡️  Совершаем звонок при помощи url_launcher

Future<void> launchCall({required String phoneNumber}) async {
  final Uri url = Uri.parse('tel:$phoneNumber');
  if (await canLaunchUrl(url)) {
    await launchUrl(url);
  } else {
    throw 'Не удалось запустить вызов на: $phoneNumber';
  }
}


➡️Отправляем e-mail

Future<void> launchEmail({required String email}) async {
  final Uri url = Uri.parse('mailto:$email');
  if (await canLaunchUrl(url)) {
    await launchUrl(url);
  } else {
    throw 'Не удалось открыть почтовый клиент для: $email';
  }
}


➡️Открываем сайт

Future<void> launchWeb({required String url}) async {
  final Uri uri = Uri.parse(url);
  if (await canLaunchUrl(uri)) {
    await launchUrl(uri, mode: LaunchMode.externalApplication);
  } else {
    throw 'Не удалось открыть ссылку: $url';
  }
}


Но при подключении пакета не забываем о настройках Info.plist (iOS) и AndroidManifest.xml (Android), иначе canLaunchUrl может возвращать false.  
Подробнее — в документации пакета.

⌛Если вы нацелены на веб-платформу, стоит помнить:
— Ссылки можно открывать только в ответ на действие пользователя
— Все ссылки открываются во внешнем браузере
— Некоторые LaunchMode не поддерживаются и игнорируются

Основные методы пакета:
🔵 canLaunchUrl(Uri) — проверяет, может ли система обработать URL
🔵 launchUrl(Uri, {LaunchMode, ...}) — открывает указанный URL  
🔵 launchUrlString(String urlString, {LaunchMode, ...}) — альтернатива, если не хочется вручную парсить Uri
🔵 LaunchMode — перечисление, управляющее способом
🔵 platformDefault — по умолчанию (решает сама платформа)
🔵inAppWebView — открытие во встроенном WebView
🔵inAppBrowserView — встроенный браузер (Chrome Custom Tabs / Safari VC)
🔵externalApplication — открытие во внешнем приложении
🔵 externalNonBrowserApplication — открытие во внешнем не браузерном приложении

💡Но и, конечно, не забываем:
— Проверять URL через canLaunchUrl, чтобы избежать ошибок
— Использовать Uri.parse() вместо обычной строки — это безопаснее и надежнее
— Тестировать поведение на разных платформах (iOS, Android, Web) — оно может отличаться

На этом все! Наши ссылки все активны!🔗
  • 👍 12
  • ❤ 4
  • 🔥 1
More from @flutterfriendly
  1. May 14, 2026👀Какой сложный вопрос или тема по Flutter вас сейчас беспокоят? Может, задача не идет, ба…
  2. Apr 17, 2026💭Привет! Это Роза, Flutter-разработчица Friflex! Уверена, многие из вас знакомы с Dart De…
  3. Apr 8, 2026Привет, друзья! Делимся нашей страничкой на Хабре, чтобы всегда оставаться на связи. Там е…
  4. Apr 3, 2026🌸Апрель в календаре и на экране Весна зовет обновлять визуальное: убирать темные темы и в…
  5. Apr 1, 2026Всегда с нетерпением ждем этого дня, чтобы сделать подборку ИТ-мемов Пусть поводов для улы…
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 →