This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import 'dart:math' as math; | |
extension RandomListItem<T> on List<T> { | |
static final _rand = math.Random(); | |
/// picks a random item from the list. | |
T randomItem() => this[_rand.nextInt(length)]; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import 'package:flutter/foundation.dart'; | |
extension MobilePlatform on TargetPlatform { | |
/// Checks if platform is mobile. | |
bool isMobilePlatform() => | |
this == TargetPlatform.android || this == TargetPlatform.iOS; | |
} | |
extension CupertinoPlatform on TargetPlatform { | |
/// Checks if platform is an apple device. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import 'package:package_info_plus/package_info_plus.dart'; | |
import 'package:riverpod_annotation/riverpod_annotation.dart'; | |
part 'package_info_provider.g.dart'; | |
@riverpod | |
Future<PackageInfo> packageInfo(PackageInfoRef ref) => | |
PackageInfo.fromPlatform(); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import 'package:riverpod_annotation/riverpod_annotation.dart'; | |
import 'package:sensors_plus/sensors_plus.dart'; | |
part 'sensor_provider.g.dart'; | |
// https://pub.dev/packages/sensors_plus | |
@riverpod | |
Stream<AccelerometerEvent> accelerometer(AccelerometerRef ref) => | |
accelerometerEventStream(); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import 'package:connectivity_plus/connectivity_plus.dart'; | |
import 'package:riverpod_annotation/riverpod_annotation.dart'; | |
part 'connectivity_status_provider.g.dart'; | |
@riverpod | |
Stream<List<ConnectivityResult>> connectivityStatus( | |
ConnectivityStatusRef ref, | |
) async* { | |
final Connectivity connectivity = Connectivity(); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import 'package:flutter/widgets.dart' | |
show BoxConstraints, BuildContext, MediaQuery; | |
/// BoxConstraints matching the material3 guidelines | |
const BoxConstraints materialBoxConstraints = BoxConstraints(maxWidth: 840); | |
/// https://m3.material.io/foundations/layout/applying-layout/window-size-classes | |
enum WindowClass implements Comparable<WindowClass> { | |
small(_smallWidth), | |
medium(_mediumWidth), |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import 'package:flutter/material.dart'; | |
import 'package:flutter_riverpod/flutter_riverpod.dart'; | |
extension OnRefresh<T> on WidgetRef { | |
/// Use for [RefreshIndicator.onRefresh] | |
Future<void> onRefresh(Refreshable<T> provider) async { | |
try { | |
return await refresh(provider); | |
} catch (_) { | |
return; |