flutter_causality 0.0.1 copy "flutter_causality: ^0.0.1" to clipboard
flutter_causality: ^0.0.1 copied to clipboard

Flutter extensions for the causality Dart package. Easily observe causes in your widget tree.

example/lib/main.dart

import 'package:causality/causality.dart';
import 'package:flutter/material.dart';
import 'package:flutter_causality/flutter_causality.dart';

class RequestDataCause extends Cause {}

class DataAvailableCause extends Cause {
  DataAvailableCause(this.data);

  final String data;
}

void main() {
  final CausalityUniverse causalityUniverse = CausalityUniverse();

  Effect((_) async {
    await Future<void>.delayed(const Duration(seconds: 5));
    return [DataAvailableCause('data')];
  }).observe(
    [RequestDataCause],
    universe: causalityUniverse,
  );

  ViewModel(causalityUniverse);

  runApp(
    CausalityUniverseWidget(
      causalityUniverse: causalityUniverse,
      child: MaterialApp(
        home: Scaffold(
          body: EffectWidget(
            builder: (cause) => switch (cause) {
              ViewModelUpdatedCause _ => Center(
                  child: Text(cause.viewModel.data ?? ''),
                ),
              _ => const Center(
                  child: CircularProgressIndicator(),
                ),
            },
            observedCauseTypes: const [
              ViewModelUpdatedCause,
            ],
          ),
        ),
      ),
    ),
  );
}

class ViewModel {
  ViewModel(CausalityUniverse causalityUniverse) {
    Effect((cause) {
      if (cause case DataAvailableCause _) {
        data = cause.data;
      }
      return [
        ViewModelUpdatedCause(this),
      ];
    }).observe(
      [
        DataAvailableCause,
      ],
      universe: causalityUniverse,
    );

    RequestDataCause().emit(universe: causalityUniverse);
  }

  String? data;
}

class ViewModelUpdatedCause extends Cause {
  ViewModelUpdatedCause(this.viewModel);

  final ViewModel viewModel;
}
0
likes
160
pub points
0%
popularity

Publisher

verified publishergoddchen.de

Flutter extensions for the causality Dart package. Easily observe causes in your widget tree.

Repository (GitHub)
View/report issues

Documentation

API reference

License

Apache-2.0 (license)

Dependencies

causality, flutter

More

Packages that depend on flutter_causality