clean_framework 1.3.1 copy "clean_framework: ^1.3.1" to clipboard
clean_framework: ^1.3.1 copied to clipboard

Clean Architecture components library, inspired on the guidelines created by Uncle Bob.

example/lib/main.dart

import 'dart:developer';

import 'package:clean_framework/clean_framework.dart';
import 'package:clean_framework_example/asset_feature_provider.dart';
import 'package:clean_framework_example/providers.dart';
import 'package:clean_framework_example/routes.dart';
import 'package:flutter/material.dart';

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  loadProviders();

  runApp(ExampleApp());
}

class ExampleApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return FeatureScope<AssetFeatureProvider>(
      register: () => AssetFeatureProvider(),
      loader: (featureProvider) async {
        // To demonstrate the lazy update triggered by change in feature flags.
        await Future.delayed(Duration(seconds: 2));
        await featureProvider.load('assets/flags.json');
      },
      onLoaded: () {
        log('Feature Flags activated.');
      },
      child: AppProvidersContainer(
        providersContext: providersContext,
        onBuild: (context, _) {},
        child: MaterialApp.router(
          routeInformationParser: router.informationParser,
          routerDelegate: router.delegate,
          theme: ThemeData(
            pageTransitionsTheme: PageTransitionsTheme(
              builders: {
                TargetPlatform.android: ZoomPageTransitionsBuilder(),
              },
            ),
          ),
        ),
      ),
    );
  }
}