presented_bloc 1.0.0-beta.1
presented_bloc: ^1.0.0-beta.1 copied to clipboard
A seamless blend of Bloc state management, MVVM architecture, and a presenter‑driven navigation system.
example/lib/main.dart
import 'package:example/barrel.dart';
import 'package:flutter/cupertino.dart';
import 'package:presented_bloc/presented_bloc.dart'
hide AppCubit, AppState, AppView, AppViewModel;
void main() {
OperatingSystem.run(
ios: runCupertinoClient,
android: runMaterialClient,
macos: runCupertinoClient,
fallback: runCupertinoClient,
onError: (error, stackTrace) =>
print('Error: $error\nStackTrace: $stackTrace'),
);
}
void runMaterialClient() {
final cubit = AppCubit(
AppState(
operatingSystem: OperatingSystem.current,
designLanguage: DesignLanguage.material,
appName: 'Example',
),
);
cubit.presenter.run(
newView: ({required newViewModel}) {
return AppView.material(
newViewModel: newViewModel,
launchWidget: const Launch(),
);
},
newViewModel: AppViewModel.new,
);
}
void runCupertinoClient() {
final cubit = AppCubit(
AppState(
operatingSystem: OperatingSystem.current,
designLanguage: DesignLanguage.cupertino,
appName: 'Example',
),
);
cubit.presenter.run(
newView: ({required newViewModel}) {
return AppView.cupertino(
newViewModel: newViewModel,
theme: const CupertinoThemeData(
brightness: Brightness.light,
),
launchWidget: const Launch(),
);
},
newViewModel: AppViewModel.new,
);
}