Skip to content

Instantly share code, notes, and snippets.

@fabriciovergara
fabriciovergara / pubspec_base_sync.py
Created February 17, 2022 15:50
Flutter: Sync pubspec file in melos project with flavors
import sys
import glob
import ruamel.yaml
yaml = ruamel.yaml.YAML()
def main():
# python3 pubspec_base_sync.py ../pubspec_base_android.yaml ../pubspec_base_android_huawei.yaml
@nythrox
nythrox / pattern_matching.dart
Last active January 23, 2023 06:21
Flutter/Dart pattern matching
void main() {
Greeting message = Hi();
final result = match(message, {
on((Hi hi) => "hello, ${hi.name}"),
on((Bye bye) => "bye, see you at ${bye.seeYouAgain}"),
otherwise(() => throw Error()),
});
print(result);
@DavidIbrahim
DavidIbrahim / DashedBorder.kt
Last active July 24, 2025 07:48
dashedBorder modifier for android compose
import androidx.compose.foundation.BorderStroke
/*
* Copyright 2020 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
@nythrox
nythrox / do_notation.dart
Last active January 23, 2023 06:23
Flutter/Dart do notation
main() {
// Either<dynamic, int> result
final result = Either.Do(() {
final num1 = perform(Right(5));
final num2 = perform(Right(2));
return num1 * num2;
});
print(result.value); // 10
// Option<int> result2
final result2 = Option.Do(() {
@nythrox
nythrox / do_notation_future.dart
Last active January 23, 2023 06:23
Dart await/async using Future and do notation
main() {
final value = async(() {
final num1 = await(Future.value(5));
final num2 = await(Future.value(2));
return num1 * num2;
});
value.then(print).catchError(print);
async(() {
[1,2,3,4,5].forEach((i) {
@Shipaaaa
Shipaaaa / Navigation-Battle-Navigation-component-links.md
Last active January 29, 2024 05:49
Полезные материалы, которые встречались в навигационной битве в Android Broadcast.

Материалы для вхождения в MVI

Открытые вопросы

  • Что такое единый стейт? Если экран сложный, то как описывать сложные стейты. Если через seald class, то по какому принципу описывать seald class со стейтом?
  • Как работать с single liveData (map/distinct?)
  • Как работать с command liveData? Нужно разделить общие команды и приватные для каждого экрана.
  • Как подружить liveData и state-delegate? Какую сделать структуры обертки для загружаемых данных(Loading, Content, Error).
  • Как обрабатывать пересоздание диалогов (как подсунуть новую лямбду) Нужно посмотреть сюда.
@LionZXY
LionZXY / smali-cheatsheet.md
Last active February 4, 2025 07:52
Smali docs на русском. Теперь в Markdown

Русская шпаргалка по Smali

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

Изначальный текст на русском взят отсюда. Там текст появился из машинного перевода официальной документации.

В итоге, оформил сухой текст + поправил небольшие опечатки и корявости перевода. По поводу замечаний и предложений можете писать либо мне в ЛС, либо оформлять PR на Gist.

Общая информация

Виды(Types)

@RajithaKumara
RajithaKumara / LocalServerSocket.md
Created September 20, 2019 13:45
Android create Unix domain socket by bound file descriptor

Android create Unix domain socket by bound file descriptor

Android provide LocalServerSocket and LocalSocket to create Unix domain sockets for local interprocess communication (IPC). Unix socket address can behave in three types[1],

  • pathname
  • unnamed
  • abstract

LocalServerSocket provide two public constructors for create socket in Linux abstract namespace[2] and create socket using file descriptor that's already been created and bound[3].

Create LocalServerSocket using [FileDescriptor](https://docs.oracle.com/javase/7/docs/api/j

@emilieroberts
emilieroberts / keyboard_support.kt
Created August 15, 2019 18:04
Keyboard support example for Android on Chrome OS
override fun onKeyUp(code: Int, ev: KeyEvent?): Boolean {
return when (code) {
KeyEvent.KEYCODE_J -> {
// Do something here
true
}
else -> super.onKeyUp(code, ev) // Important
}
}