resource_widget 3.1.1
resource_widget: ^3.1.1 copied to clipboard
Simplifies usage of the flutter `FutureBuilder` and `StreamBuilder` in combination with `Resource<T>` (of `resource_result` package).
example/example.dart
import 'package:flutter/material.dart';
import 'package:resource_result/resource_result.dart';
import 'package:resource_widget/resource_widget.dart';
final myIntResource = Success(3);
final myIntResourceBuilder = ResourceBuilder(
resource: myIntResource,
success: (context, myInt) => Text("My int loaded successfully: $myInt"),
loadingIndicator: (context, data) => const CircularProgressIndicator(),
failureBuilder: (context, message) =>
Text("Failed to get my int :(. $message"),
);
final Future<Resource<int>> getSomeIntFuture = Future.value(Success(3));
final myIntResourceFutureBuilder = ResourceFutureBuilder(
future: getSomeIntFuture,
success: (context, myInt) => Text("My int loaded successfully: $myInt"),
loadingIndicator: (context, data) => const CircularProgressIndicator(),
/* optional handleError: defaults to red Text with error message */
failureBuilder: (context, message) =>
Text("Failed to get my int :(. $message"),
);
final Stream<Resource<int>> someIntStream =
Stream.fromIterable([Loading(null), Success(3), Failure("Failed")]);
final myIntResourceStreamBuilder = ResourceStreamBuilder(
stream: someIntStream,
success: (context, myInt) => Text("My int loaded successfully: $myInt"),
loadingIndicator: (context, data) => const CircularProgressIndicator(),
/* optional handleError: defaults to red Text with error message */
failureBuilder: (context, message) =>
Text("Failed to get my int :(. $message"));