import 'package:flutter/material.dart'; extension ImageExtension on num { int cacheSize(BuildContext context) { return (this * MediaQuery.of(context).devicePixelRatio).round(); } } extension ScrollControllerExt on ScrollController { void animToTop() { if (!hasClients) return; animateTo(0, duration: const Duration(milliseconds: 500), curve: Curves.easeInOut); } } extension ListExt on List? { bool get isNullOrEmpty => this == null || this!.isEmpty; T? getOrNull(int index) { if (isNullOrEmpty) { return null; } return this![index]; } bool eq(List? other) { if (this == null) { return other == null; } if (other == null || this!.length != other.length) { return false; } for (int index = 0; index < this!.length; index += 1) { if (this![index] != other[index]) { return false; } } return true; } bool ne(List? other) => !eq(other); } extension StringExt on String { String get http2https => replaceFirst(RegExp("^http://"), "https://"); }