Skip to content

Instantly share code, notes, and snippets.

@koral--
koral-- / xml_parser.dart
Created November 28, 2023 11:43
XML parser
Map.fromEntries(XmlDocument.parse(
await Resource('package:plural_lint/src/cldr/plurals.xml') // 1
.readAsString(encoding: utf8))
.xpath('/supplementalData/plurals[@type="cardinal"]/pluralRules') // 2
.map((item) => item
.xpath('@locales')
.first
.value! // 3
.split(' ') // 4
.map((locale) => MapEntry(
void main() {
final input = stdin.readLineSync();
final result = PatternDefinition().build().parse(input ?? '');
if (result is Success) {
print('Pattern found, result: ${result.value}');
} else {
print('Pattern not found');
}
}
class PatternDefinition extends GrammarDefinition<int?> {
@koral--
koral-- / dio.dart
Created March 2, 2023 23:44
Dio with HTTP certificates pinning
final certificates = await rootBundle.load('assets/openssl/google.crt');
final dio = Dio();
(dio.httpClientAdapter as IOHttpClientAdapter).onHttpClientCreate = (client) {
final securityContext = SecurityContext(); //1
securityContext.setTrustedCertificatesBytes(certificates.buffer.asUint8List());
return HttpClient(context: securityContext);
};
final response = await dio.getUri(Uri.parse('https://google.pl'));
print(response.statusCode);
@koral--
koral-- / httpclient.dart
Last active March 2, 2023 23:27
Dart HTTP client with certificate pinning
final securityContext = SecurityContext();
final certificates = await rootBundle.load('assets/certificates/google.crt'); //1
securityContext.setTrustedCertificatesBytes(certificates.buffer.asUint8List()); //2
final httpClient = HttpClient(context: securityContext);
final httpClientRequest = await httpClient.getUrl(Uri.parse('https://google.pl'));
final response = await httpClientRequest.close();
print(response.statusCode);
@koral--
koral-- / flatten.dart
Created June 28, 2022 09:17
List flattening
void main() {
var labels = [1,2,6,7];
print(labels.map((l)=> ["x", l.toString()]).expand((t)=>t).toList());
}
@koral--
koral-- / pubspec.yaml
Created June 23, 2021 16:17
Flutter i18n
flutter_intl:
enabled: true
class_name: Strings
localizely:
project_id: 39cf3f3a-a154-4d3f-85b5-f57e71774f3e
@koral--
koral-- / build.gradle.kts
Created March 2, 2020 01:44
GenerateNavArgsProguardRulesTask usage
tasks {
named("preBuild").dependsOn(register("generateNavArgsProguardRules", GenerateNavArgsProguardRulesTask::class))
}
android {
defaultConfig {
consumerProguardFile(File(buildDir, NAVARGS_PROGUARD_RULES_PATH))
}
}
@koral--
koral-- / build.gradle.kts
Created March 2, 2020 01:37
GenerateNavArgsProguardRulesTask registration
tasks {
named("preBuild").dependsOn(register("generateNavArgsProguardRules", GenerateNavArgsProguardRulesTask::class))
}
@koral--
koral-- / GenerateNavArgsProguardRulesTask.kt
Created March 2, 2020 01:18
Complete GenerateNavArgsProguardRulesTask
import org.gradle.api.DefaultTask
import org.gradle.api.file.FileTree
import org.gradle.api.tasks.*
import java.io.File
import javax.xml.parsers.DocumentBuilderFactory
const val NAVARGS_PROGUARD_RULES_PATH = "generated/proguard-rules/navargs-proguard-rules.pro"
private const val APP_NAMESPACE = "http://schemas.android.com/apk/res-auto"
@CacheableTask
@koral--
koral-- / GenerateNavArgsProguardRulesTask.kt
Last active March 2, 2020 01:17
GenerateNavArgsProguardRulesTask action
private const val APP_NAMESPACE = "http://schemas.android.com/apk/res-auto"
abstract class GenerateNavArgsProguardRulesTask : DefaultTask() {
@get:InputFiles
@get:SkipWhenEmpty
val navigationGraphFiles: FileTree = project.fileTree("src/main/res/navigation") {
include("*.xml")
}