proviso 2.0.0 copy "proviso: ^2.0.0" to clipboard
proviso: ^2.0.0 copied to clipboard

Complete set of tools for widgets conditional rendering and wrapping. Conditional widgets and builders.

example/example.md

Proviso Example #

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

class MyWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Column(
      children: [
        ConditionWidget(
          condition: isActive,
          widget: ActiveView(),
          fallback: InactiveView(),
        ),
        ConditionBuilder(
          condition: (_) => hasItems,
          trueBuilder: (_) => ItemList(),
          fallbackBuilder: (_) => EmptyState(),
        ),
        SwitchCaseBuilder.widget<String>(
          context: context,
          condition: (_) => status,
          caseBuilders: {
            'loading': (_) => LoadingWidget(),
            'success': (_) => SuccessWidget(),
            'error': (_) => ErrorWidget(),
          },
          fallbackBuilder: (_) => UnknownStatusWidget(),
        ),
        ConditionalWrap(
          shouldWrap: isSelected,
          child: Text('Hello'),
          parentBuilder: (child) => Container(
            color: Colors.blue,
            child: child,
          ),
        ),
        SafeBuilder(
          widgetBuilder: (_) => riskyWidget,
          fallbackBuilder: (error, stackTrace, _) => ErrorText(error),
        ),
        PlatformWidget(
          android: (_) => MaterialButton(),
          ios: (_) => CupertinoButton(),
          web: (_) => WebButton(),
          fallback: (_) => DefaultButton(),
        ),
        MediaQueryCondition(
          condition: (_, mq) => mq.size.width > 600,
          builder: (_) => WideLayout(),
          fallbackBuilder: (_) => NarrowLayout(),
        ),
        AsyncConditional<User>(
          future: fetchUser(),
          loading: (_) => CircularProgressIndicator(),
          data: (_, user) => UserCard(user),
          error: (_, error, __) => ErrorWidget(error),
        ),
        AnimatedConditional(
          condition: isVisible,
          trueWidget: DetailView(),
          falseWidget: SummaryView(),
        ),
        ReactiveConditional<bool>(
          notifier: isActiveNotifier,
          condition: (value) => value,
          trueBuilder: (_) => ActiveIndicator(),
          fallbackBuilder: (_) => InactiveIndicator(),
        ),
        IfNotEmpty<User>(
          items: users,
          builder: (_, users) => UserList(users),
          fallbackBuilder: (_) => EmptyState(),
        ),
      ],
    );
  }
}
5
likes
150
points
192
downloads

Documentation

API reference

Publisher

verified publishermos-dev.com

Weekly Downloads

Complete set of tools for widgets conditional rendering and wrapping. Conditional widgets and builders.

Repository (GitHub)
View/report issues

License

BSD-3-Clause (license)

Dependencies

flutter

More

Packages that depend on proviso