Skip to content

Instantly share code, notes, and snippets.

View s0nerik's full-sized avatar
🎯
Building stuff

Sasha Isaienko s0nerik

🎯
Building stuff
View GitHub Profile
@s0nerik
s0nerik / main.dart
Created May 14, 2020 14:09
Dart sucks
void main() {
final iterable = [1].map((x) => x * 2);
x(iterable);
}
void x(List<int> ints) {
print('Hello');
}
@s0nerik
s0nerik / preprocess.py
Created June 4, 2020 01:10
Preprocess SVG files for svg_flutter
#!/usr/bin/env python3
# coding=utf8
import re
import io
import os
import sys
regex = r"(<[^>]+href=\"#([^>]+)\"[^<]*>)[^\3]*(<[^>]+id=\"\2\"[^<]*>)"
pattern = re.compile(regex)
@s0nerik
s0nerik / adjust_pan.dart
Last active August 26, 2020 21:25
A widget that mimics Android's `adjustPan` windowSoftInputMode
import 'dart:async';
import 'package:flutter/rendering.dart';
import 'package:flutter/widgets.dart';
typedef AdjustPanChildBuilder = Widget Function(EdgeInsetsGeometry padding);
/// A widget that forces the same behavior as
/// Android's `adjustPan` windowSoftInputMode.
///
@s0nerik
s0nerik / cluster.dart
Last active November 12, 2020 10:03
Flutter cluster bitmap rendering example
BitmapDescriptor _stationPin;
ui.Image _clusterBgImage;
Future<BitmapDescriptor> _getClusterBitmap(
BuildContext context,
MapCluster cluster,
) async {
if (!cluster.isCluster && _stationPin != null) {
return _stationPin;
}
@s0nerik
s0nerik / enum_mapper.dart
Last active July 17, 2021 13:12
Two way enum mapper
typedef EnumMapperCallback<T, E> = T Function(E value);
class EnumMapper<E, T> {
EnumMapper(List<E> enumValues, EnumMapperCallback<T, E> mapper) {
for (final enumValue in enumValues) {
final key = enumValue;
final value = mapper(enumValue);
_forwardMap[key] = value;
_inverseMap[value] = key;
}
@s0nerik
s0nerik / main.dart
Last active October 4, 2021 12:25
Figma line height vs Flutter's TextStyle height illustration
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
const lineHeight = 27.0;
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
@s0nerik
s0nerik / main.dart
Created October 18, 2021 11:23
Dart async error catch example (WRONG, doesn't capture expection)
Future<void> main() async {
await test();
}
Future<void> test() async {
try {
return errorGenerator();
} catch (e) {
print('!!!CAPTURED ERROR!!!');
} finally {
@s0nerik
s0nerik / main.dart
Created October 18, 2021 11:23
Dart async error catch example (CORRECT, actually captures the expection)
Future<void> main() async {
await test();
}
Future<void> test() async {
try {
return await errorGenerator();
} catch (e) {
print('!!!CAPTURED ERROR!!!');
} finally {
@s0nerik
s0nerik / main.dart
Created October 21, 2021 09:59
UseCase specification comparison (class vs function, explicit vs implicit deps)
void main() {
final di = DIContainer();
final quarterExpenses1 = di.getComputeQuarterExpensesUseCase().perform(100000);
print(quarterExpenses1);
final quarterExpenses2 = di.getComputeQuarterExpensesUseCaseFunction()(100000);
print(quarterExpenses2);
final quarterExpenses3 = di.getExplicitComputeQuarterExpensesUseCaseFunction()(100000);
print(quarterExpenses3);
}
@s0nerik
s0nerik / main.dart
Last active October 28, 2021 21:17
Dart: Future<void> vs void execution
import 'dart:async';
void main() {
fn1();
scheduleMicrotask(() {
print('microtask after fn1');
});
fn2();
scheduleMicrotask(() {
print('microtask after fn2');