import Codex.KinoHelpers
{:ok, pid} = Entrace.start_link()
import 'package:flutter/gestures.dart'; | |
import 'package:flutter/rendering.dart'; | |
import 'package:flutter/widgets.dart'; | |
typedef TapOutsideCallback = void Function(BoxHitTestResult hitTestResult); | |
/// Allows widgets to detect when tapping outside of the bounds of the widget. | |
/// | |
/// A common use case is allowing [TextField]s and other widgets to give up | |
/// their focus when someone taps outside of them. |
import 'package:flutter/foundation.dart'; | |
import 'package:flutter/services.dart'; | |
import 'package:flutter/widgets.dart'; | |
/// This class smooths over the platform differences for a RawKeyEvent, | |
/// encapsulates some workarounds for Flutter keyboard handling bugs, | |
/// and makes it easier to match up [LogicalKeyEvent] to a keyboard shortcut | |
/// combo. | |
/// | |
/// It accounts for edge cases & bugs such as: |
void main() { | |
final lst1 = ["t1" , "t2" , "t3" , "t4"]; | |
final lst2 = ["t2" , "t4" , "t5"]; | |
final diff = lst1.whereNotIn(lst2).toList(); | |
print(diff); | |
} | |
extension WhereNotInExt<T> on Iterable<T> { | |
Iterable<T> whereNotIn(Iterable<T> reject) { | |
final rejectSet = reject.toSet(); |
import 'dart:io'; | |
import 'package:file/local.dart'; | |
import 'package:glob/glob.dart'; | |
import 'package:path/path.dart' as path; | |
void main(List<String> args) async { | |
assert(args.length == 1); | |
await updateRelativeImportsInPackage(args[0]); | |
} |
import 'package:flutter/widgets.dart'; | |
class SeparatedRow extends StatelessWidget { | |
const SeparatedRow({ | |
@required this.separator, | |
@required this.children, | |
this.mainAxisAlignment = MainAxisAlignment.start, | |
this.mainAxisSize = MainAxisSize.max, | |
this.crossAxisAlignment = CrossAxisAlignment.center, | |
}) : assert(separator != null), |
import 'package:flutter/widgets.dart'; | |
import 'package:flutter_hooks/flutter_hooks.dart'; | |
// adapted from https://stackoverflow.com/a/54173729/67655 | |
class ExpandableSection extends HookWidget { | |
const ExpandableSection({ | |
Key key, | |
this.expanded = false, | |
this.child, |
import 'package:flutter/widgets.dart'; | |
// original credit to https://medium.com/swlh/flutter-line-metrics-fd98ab180a64 | |
class LineMetricsDebug extends StatelessWidget { | |
LineMetricsDebug({ | |
this.text, | |
this.style, | |
this.width, | |
this.height, |
// @ts-check | |
const fs = require('fs') | |
const url = require('url') | |
const path = require('path') | |
const { promisify } = require('util') | |
const exists = promisify(fs.exists) | |
const readFile = promisify(fs.readFile); | |
const writeFile = promisify(fs.writeFile) |