Forwarded from Surf Flutter Team
Мы все стремимся к лаконичному и понятному асинхронному коду с Future. Но иногда реальность вносит свои коррективы — приходится работать с библиотеками и плагинами, у которых только
callback-based API
.Ситуацию можно взять в свои руки и преобразовать неудобные вызовы
method((result) { … })
в привычный dart
final result = await method().
Дима, Flutter Team Lead в Surf, показал, как это реализовать с помощью
Completer
. Если что-то осталось непонятным — читай официальную документацию.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Mobile AppSec World (Yury Shabalin)
И снова любимый Flutter и перехват трафика/Unpinning
Как же все-таки перехватить трафик флаттер-приложений?)
Какие способы помимо reFlutter существуют?))
Очень крутая статья как раз про это. Автор описывает строение Flutter-приложений, как использовать reFlutter и что он делает под капотом. И основная часть про то, как он пытался повторить тоже самое, но при помощи Frida.
Очень много отсылок к разным крутым статьям в процессе рассказа, очень много ссылок в конце, которые тоже крайне полезно почитать!
Так что изучаем и “make Flutter great again!” 🫢
Как же все-таки перехватить трафик флаттер-приложений?)
Какие способы помимо reFlutter существуют?))
Очень крутая статья как раз про это. Автор описывает строение Flutter-приложений, как использовать reFlutter и что он делает под капотом. И основная часть про то, как он пытался повторить тоже самое, но при помощи Frida.
Очень много отсылок к разным крутым статьям в процессе рассказа, очень много ссылок в конце, которые тоже крайне полезно почитать!
Так что изучаем и “make Flutter great again!” 🫢
Sensepost
SensePost | Intercepting https communication in flutter: going full hardcore mode with frida
Leaders in Information Security
Forwarded from Frontend Portal
This media is not supported in your browser
VIEW IN TELEGRAM
В копилку лайфхаков по VSCode: теперь в терминале можно включить автодополнение а-ля IntelliSense
Как включить:
• Открываешь Settings → ищешь "terminal integrated suggest"
• Врубаешь чекбокс
Пользуемся😇
➡️ @FrontendPortal | #vscode
Как включить:
• Открываешь Settings → ищешь "terminal integrated suggest"
• Врубаешь чекбокс
Пользуемся
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Flutter. Много
Hola, Amigos! На связи Павел Гершевич, Mobile Team Lead в Amiga. Сегодня обсудим максимально полезный инструмент для командной работы — Git Hooks.
При совместной разработке кода часто возникают различия в стилях: кто-то забывает переносы строк, кто-то — запятые. Конечно, можно поручить форматирование CI/CD, но это займет больше времени. Git Hooks выполняются на рабочей станции разработчика и легко настраиваются.
Для чего могут быть полезны Git Hooks:
⚙️ Форматирование кода —
⚙️ Статический анализ кода —
⚙️ Запуск тестов
Все это можно запускать в определенные моменты:
⚙️ Перед и после
⚙️ Перед и после
⚙️ Перед и после других команд гита
Давайте рассмотрим на примере добавления команды на форматирование кода перед тем, как разработчик сделает коммит.
Пример: добавим команду форматирования кода перед коммитом. Сначала укажем папку для Git Hooks:
Далее создадим эту папку и в ней файл pre-commit. Посмотрим на его наполнение:
Тут мы не просто не вызываем наш метод, но и смотрим на его результат. Если он ничего не поменял, то выведем, что все хорошо, в обратном случае попросим пользователя сделать коммит еще раз.
Во второй части мы перенесем этот скрипт на Dart.
Делитесь в чате: используете ли вы Git Hooks в своих проектах? Какие команды запускаете?
При совместной разработке кода часто возникают различия в стилях: кто-то забывает переносы строк, кто-то — запятые. Конечно, можно поручить форматирование CI/CD, но это займет больше времени. Git Hooks выполняются на рабочей станции разработчика и легко настраиваются.
Для чего могут быть полезны Git Hooks:
dart format
dart analyze
Все это можно запускать в определенные моменты:
git commit
git push
Давайте рассмотрим на примере добавления команды на форматирование кода перед тем, как разработчик сделает коммит.
Пример: добавим команду форматирования кода перед коммитом. Сначала укажем папку для Git Hooks:
git config core.hooksPath .githooks/
Далее создадим эту папку и в ней файл pre-commit. Посмотрим на его наполнение:
#!/usr/bin/env bash
#dart format
printf "\e[33;1m%s\e[0m\n" 'Running dart format'
result=$(dart format .)
result_lines=$(echo "$result" | wc -l)
if [ "$result_lines" -gt 1 ]; then
echo "$result"
printf "\e[31;1m%s\e[0m\n" 'Dart format applied changes, please recommit'
exit 1
fi
echo "$result"
printf "\e[32;1m%s\e[0m\n" 'Finished running dart format'
Тут мы не просто не вызываем наш метод, но и смотрим на его результат. Если он ничего не поменял, то выведем, что все хорошо, в обратном случае попросим пользователя сделать коммит еще раз.
Во второй части мы перенесем этот скрипт на Dart.
Делитесь в чате: используете ли вы Git Hooks в своих проектах? Какие команды запускаете?
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Flutter. Много
Hola, Amigos! На связи Павел Гершевич, Mobile Team Lead в Amiga. Сегодня мы продолжим говорить про Git Hooks, а именно рассмотрим, как их можно делать на Dart.
В этом нам поможет библиотека git_hooks. Ее нужно активировать глобально.
Далее создать место, где будут храниться наши хуки внутри нашего проекта.
Потом необходимо создать файл
И выполнить команду, которая все для нас подготовит
После чего мы можем приступить к написанию нашего хука. Заполним наш файл
Теперь наш хук должен заработать.
На самом деле, такое решение вполне применимо, но лучше использовать стандартные хуки на Bash.
Делитесь в чате, попробовали ли бы использовать такие хуки?
В этом нам поможет библиотека git_hooks. Ее нужно активировать глобально.
dart pub global activate git_hooks
Далее создать место, где будут храниться наши хуки внутри нашего проекта.
git_hooks create bin/git_hooks.dart
Потом необходимо создать файл
bin/main.dart
со следующим содержанием:void main() async{
GitHooks.init(targetPath: "bin/git_hooks.dart");
}
И выполнить команду, которая все для нас подготовит
dart bin/main.dart
После чего мы можем приступить к написанию нашего хука. Заполним наш файл
git_hooks.dart
:void main(List arguments) {
Map<Git, UserBackFun> params = {
Git.preCommit: _formatCode,
};
GitHooks.call(arguments, params);
}
Future<bool> _formatCode() async {
try {
print(‘Running dart format’);
ProcessResult result = await Process.run(‘dart format .’, [‘bin’]);
print(result.stdout);
if (result.exitCode != 0) return false;
} catch (e) {
return false;
}
return true;
}
Теперь наш хук должен заработать.
На самом деле, такое решение вполне применимо, но лучше использовать стандартные хуки на Bash.
Делитесь в чате, попробовали ли бы использовать такие хуки?
Forwarded from Flutter Friendly
Привет! Это Роза, Flutter Dev Friflex! 👋
Когда я только начинала работать, почти не пользовалась горячими клавишами. У меня была мышка. И этого вроде бы хватало, но со временем мне захотелось ускорить свою работу, поэтому я целенаправленно начала внедрять шорткаты в свою разработку. И это было лучшим решением!
Хочу поделиться и с вами самыми полезными из них — вдруг пригодятся.
🔴 Начнем с навигации и поиска:
⌘ + P — открыть файл по имени
⌘ + Shift + F — поиск по всему проекту
⌘ + G — перейти к строке
⌘ + Shift + O — перейти к функции или символу в файле
🔴 Редактирование кода:
Control + Space — автодополнение
⌘ + / — закомментировать или раскомментировать строку
Option + ↑/↓ — переместить строку вверх или вниз
Shift + Option + ↑/↓ — скопировать строку вверх или вниз
⌘ + Shift + K — удалить строку
Shift + Option + F — отформатировать документ
Option + Click — добавить множественный курсор
⌘ + Shift + L — выделить все вхождения слова
⌘ + F, затем ⌘ + Option + Enter — быстрая замена
🔴 Мультикурсор и выделения:
Option + Click — добавить курсор в точку клика
⌥⌘ + ↑/↓ — вставить курсор выше / ниже
⌘ + U — отменить последнее действие с курсором
⇧⌥ + I — вставить курсор в конец каждой выбранной строки
⌘ + L — выделить текущую строку
⇧⌘ + L — выделить все вхождения текущего выделения
⌘ + F2 — выделить все вхождения текущего слова
Control + ⇧⌘ + →/← — расширить/уменьшить выделение
🔴 Блочное выделение:
⇧⌥ + drag — выделение прямоугольником (box selection)
⇧⌥⌘ + ↑/↓/←/→ — выделение вверх/вниз/влево/вправо
⇧⌥⌘ + PgUp/PgDn — постраничное вертикальное выделение
💡 Конечно, вы можете настроить сочетания клавиш под себя и увидеть весь их список:
Code → Settings → Keyboard Shortcuts или нажмите ⌘ + K, затем ⌘ + S.
✏️ Также полный список есть тут: PDF от VSCode.
Когда я только начинала работать, почти не пользовалась горячими клавишами. У меня была мышка. И этого вроде бы хватало, но со временем мне захотелось ускорить свою работу, поэтому я целенаправленно начала внедрять шорткаты в свою разработку. И это было лучшим решением!
Хочу поделиться и с вами самыми полезными из них — вдруг пригодятся.
⌘ + P — открыть файл по имени
⌘ + Shift + F — поиск по всему проекту
⌘ + G — перейти к строке
⌘ + Shift + O — перейти к функции или символу в файле
Control + Space — автодополнение
⌘ + / — закомментировать или раскомментировать строку
Option + ↑/↓ — переместить строку вверх или вниз
Shift + Option + ↑/↓ — скопировать строку вверх или вниз
⌘ + Shift + K — удалить строку
Shift + Option + F — отформатировать документ
Option + Click — добавить множественный курсор
⌘ + Shift + L — выделить все вхождения слова
⌘ + F, затем ⌘ + Option + Enter — быстрая замена
Option + Click — добавить курсор в точку клика
⌥⌘ + ↑/↓ — вставить курсор выше / ниже
⌘ + U — отменить последнее действие с курсором
⇧⌥ + I — вставить курсор в конец каждой выбранной строки
⌘ + L — выделить текущую строку
⇧⌘ + L — выделить все вхождения текущего выделения
⌘ + F2 — выделить все вхождения текущего слова
Control + ⇧⌘ + →/← — расширить/уменьшить выделение
⇧⌥ + drag — выделение прямоугольником (box selection)
⇧⌥⌘ + ↑/↓/←/→ — выделение вверх/вниз/влево/вправо
⇧⌥⌘ + PgUp/PgDn — постраничное вертикальное выделение
Code → Settings → Keyboard Shortcuts или нажмите ⌘ + K, затем ⌘ + S.
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Frontend Portal
This media is not supported in your browser
VIEW IN TELEGRAM
Наткнулся на полезняшку для тех, кто не любит тащить весь репозиторий ради пары файлов — GitZip
Расширение для браузера, которое позволяет скачивать отдельные файлы или папки из любого GitHub-репо
Доступно в Chrome, Edge и Firefox
➡️ @FrontendPortal | #resourse
Расширение для браузера, которое позволяет скачивать отдельные файлы или папки из любого GitHub-репо
Доступно в Chrome, Edge и Firefox
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Стас Ильин | Flutter
Вероятно просто не хватает рук на поддержку либы
Я использовал эту тулзу для редеринга Markdown в своих проектах и естественно начал искать чем заменить
Кто не так давно в нашей Flutter тусовочке, вы возможно ещё не знаете семантику этой приписки plus. Короче если популярная библиотека больше не поддерживается - ищите её на pubdev с припиской _plus на конце
Так повелось, когда авторы забрасывают развитие своих библиотек, их форкают и продолжают развивать под новым названием
Так и в нашем случае ответственность за разработку взяла сторонняя студия
Я без малейшего понятия зачем там gpt в названии. Как я понял задумка в том чтобы использовать это для вывода ответов от gpt моделек. Но по-сути обычный виджет для рендера MD, поддерживает все необходимые теги
Ещё одна библиотека, которая реализует работу с markdown. По функционалу вроде все хорошо, но вот колиечство незакрытых issues (много) и кол-во загрузок на pubdev (мало) слегка смущает. Плюс к этому очень редко обновляется
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from 🅵🅾️🆇
Сделал пакетик, позволяет генерить локализацию с Google Sheets, есть разные полезные настройки
https://pub.dev/packages/sheety_localization
#chicken
https://pub.dev/packages/sheety_localization
dart pub global activate sheety_localization
dart pub global run sheety_localization:generate \
--credentials=credentials.json \
--sheet=<YOUR_SPREADSHEET_ID>
#chicken
Dart packages
sheety_localization | Dart package
A package to generate localization files from Google Sheets. It uses the Google Sheets API to fetch translations and generates Dart localization files for use in Flutter applications.
Forwarded from Surf Flutter Team
В каждом нашем проекте есть набор команд, который не меняется от репозитория к репозиторию. Мы их почти никогда не печатаем вручную — ищем в истории терминала или копируем из
README
.
flutter pub get \
&& flutter pub run build_runner build --delete-conflicting-outputs \
&& flutter format
В карточках Лёша, Flutter Team Lead Surf, разобрал, как спрятать эти «вечные» команды в Makefile и запускать их через
make
<command>
.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM