fp_state_generator 0.0.8 copy "fp_state_generator: ^0.0.8" to clipboard
fp_state_generator: ^0.0.8 copied to clipboard

The `@FpState` annotation is used in dependency with the `fp_state_generator` package to generate template code for managing state

example/lib/main.dart

import 'package:fp_state_generator/fp_state_annotation.dart';
import 'package:freezed_annotation/freezed_annotation.dart';
part 'main.fpState.dart';
part 'main.freezed.dart';

@fpState
sealed class AsyncState<T> {
  const AsyncState();
}

class AsyncLoading<T> extends AsyncState<T> {
  const AsyncLoading();
}

class AsyncLoaded<T> extends AsyncState<T> {
  final T data;
  const AsyncLoaded({required this.data});
  @override
  String toString() => "AsyncLoaded { data : $data }";
}

@fpState
class UiState {}

class LState extends UiState {}

class RState extends UiState {}

class R3State extends UiState {}

class R4State extends UiState {}

@freezed
@fpState
sealed class FreezedState with _$FreezedState {
  const FreezedState._();
  const factory FreezedState.FreezedState(final String user) = FreezedState1;
  const factory FreezedState.FreezedState2(final String user, final String id) =
      FreezedState2;
  const factory FreezedState.FreezedState3(
      final String user, final bool activate) = FreezedState3;
}

void main(List<String> args) {
  final state = LState();
  final match = state.match(
    lState: (data) => "LState",
    rState: (data) => "FState",
    r3State: (R3State data) {},
    r4State: (R4State data) {},
  );
  // match => "LState"
  final matchOrElse = state.matchOrElse(
    rState: (data) => "FState",
    r3State: (R3State data) {},
    r4State: (R4State data) {},
    orElse: (data) => "Orlese result",
  );
  //  matchOrElse => "Orlese result"

  final maybeMatch = state.maybeMatch(
    rState: (data) => "FState",
    r3State: (R3State data) {},
    r4State: (R4State data) {},
  );

  // maybeMatch = null

  final freezedState = FreezedState.FreezedState2("jack", "1");
  final freezedMatch = freezedState.match(
    freezedState1: (data) => "FreezedState",
    freezedState2: (data) => "FreezedState2 ${data.user},${data.id} ",
    freezedState3: (data) => "FreezedState3",
  );
  // freezedMatch => "FreezedState2 jack,1 "

  final freezedMatchOrElse = freezedState.matchOrElse(
    freezedState1: (data) => "FreezedState",
    freezedState3: (data) => "FreezedState3",
    orElse: (data) => "OrElse result",
  );
  // freezedMatchOrElse => "OrElse result"

  final freezedMaybeMatch = freezedState.maybeMatch(
    freezedState1: (data) => "FreezedState",
    freezedState3: (data) => "FreezedState3",
  );
  // freezedMaybeMatch => null

  final asyncState = AsyncLoaded(data: "data");
  final asyncMatch = asyncState.match(
    asyncLoading: (data) => "AsyncLoading",
    asyncLoaded: (data) => "AsyncLoaded ${data.data}",
  );
  // asyncMatch => "AsyncLoaded data"

  final asyncMatchOrElse = asyncState.matchOrElse(
    asyncLoading: (data) => "AsyncLoading",
    asyncLoaded: (data) => "AsyncLoaded ${data.data}",
    orElse: (data) => "OrElse result",
  );
  // asyncMatchOrElse => "AsyncLoaded data"

  final asyncMaybeMatch = asyncState.maybeMatch(
    asyncLoading: (data) => "AsyncLoading",
  );
  // asyncMaybeMatch => null
}
1
likes
0
points
154
downloads

Publisher

unverified uploader

Weekly Downloads

The `@FpState` annotation is used in dependency with the `fp_state_generator` package to generate template code for managing state

Homepage
Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

analyzer, build, change_case, source_gen

More

Packages that depend on fp_state_generator