preconditions 0.4.2 copy "preconditions: ^0.4.2" to clipboard
preconditions: ^0.4.2 copied to clipboard

outdated

Pure Dart library for management of preconditions in Flutter apps. Has the user granted all permissions? Is the phone online? Is there enough free disk space?

example/main.dart

// Copyright (c) 2021, fnx.io
// https://pub.dev/packages/preconditions
// All rights reserved.

import 'dart:async';

import 'package:flutter/material.dart';
import 'package:preconditions/preconditions.dart';

void main() async {
  // 1) Prepare test functions for mandatory preconditions of your app
  FutureOr<PreconditionStatus> isSubscriptionValid() => PreconditionStatus.satisfied();
  Future<PreconditionStatus> isServerRunning() => throw Exception("Oups, I failed again!");
  Future<PreconditionStatus> isThereEnoughDiskSpace() async => PreconditionStatus.unsatisfied("No, there is not!");

  // 2) Register these preconditions to the repository
  var repository = PreconditionsRepository();
  repository.registerPrecondition(PreconditionId("serverRunning"), isServerRunning, resolveTimeout: Duration(seconds: 1));
  repository.registerPrecondition(PreconditionId("diskSpace"), isThereEnoughDiskSpace);
  repository.registerPrecondition(
    PreconditionId("validSubscription"),
    isSubscriptionValid,
    satisfiedCache: Duration(minutes: 10),
    notSatisfiedCache: Duration(minutes: 20),
    resolveTimeout: Duration(seconds: 5),
    statusBuilder: (context, status) {
      if (status.isUnknown) return CircularProgressIndicator();
      if (status.isNotSatisfied) return Text("Please buy a new phone, because ${status.data}.");
      return Container();
    },
  );

  // 3) Evaluate your preconditions
  await repository.evaluatePreconditions();

  // 4) Profit:
  if (!repository.hasAnyUnsatisfiedPreconditions()) {
    // Navigator.of(context).push(...)
  }

  // 5) Maybe schedule?
  var demoTimer = Timer.periodic(Duration(minutes: 5), (_) {
    repository.evaluatePreconditions();
  });

  // 6) Or evaluate just some:
  await repository.evaluatePreconditionById(PreconditionId("validSubscription"));

  demoTimer.cancel();
}
5
likes
0
pub points
33%
popularity

Publisher

verified publisherfnx.io

Pure Dart library for management of preconditions in Flutter apps. Has the user granted all permissions? Is the phone online? Is there enough free disk space?

Repository (GitHub)
View/report issues

License

unknown (LICENSE)

Dependencies

flutter, logging

More

Packages that depend on preconditions