import 'package:fl_clash/state.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; extension NumExt on num { String fixed({decimals = 2}) { String formatted = toStringAsFixed(decimals); if (formatted.contains('.')) { formatted = formatted.replaceAll(RegExp(r'0*$'), ''); if (formatted.endsWith('.')) { formatted = formatted.substring(0, formatted.length - 1); } } return formatted; } double get ap { return this * (1 + (globalState.theme.textScaleFactor - 1) * 0.5); } } extension DoubleExt on double { moreOrEqual(double value) { return this > value || (value - this).abs() < precisionErrorTolerance + 1; } } extension OffsetExt on Offset { double getCrossAxisOffset(Axis direction) { return direction == Axis.vertical ? dx : dy; } double getMainAxisOffset(Axis direction) { return direction == Axis.vertical ? dy : dx; } bool less(Offset offset) { if (dy < offset.dy) { return true; } if (dy == offset.dy && dx < offset.dx) { return true; } return false; } } extension RectExt on Rect { doRectIntersect(Rect rect) { return left < rect.right && right > rect.left && top < rect.bottom && bottom > rect.top; } }