module_provider 0.0.5

  • Readme
  • Changelog
  • Installing
  • 46

module_provider #

Package to facilitate the creation applications in hierarquical modules structure

import 'package:module_provider/module_provider.dart';

Module: The module contain the basic structure for determined component, it is created when 'Component' is builded, and disposed when the 'Component' is disposed. When module is dispose, all services are disposable also.

Service: The service provide a class containing functions and properties to components, modules and another services, he is created and maintained in memory, when module be disposable, all services also be disposed.

Component: Componentes are a pages or widgets extended from StatefulWidget, but with a simple class, don't needing create a StatefullWidget and State class. All components need the module referente on your constructor.

Controller: The controller are utilized inside a components, for maintain the logical separated from component, and avoid the recreation of variables when widget build is called.

Simple exemple to use Module Provider #

On main.dart, i will informed that the 'AppModule' is my root module, so the component returned from 'build' function inside the module will be showed.

import 'app_module.dart';

void main() {
	runApp(MaterialApp(
		title: 'Module Provider',
		theme: ThemeData(primarySwatch: Colors.blue,),
		home: AppModule()
	));
}

app_module.dart

import 'package:flutter/material.dart';

class AppModule extends Module {
	@override
	List<Inject<Service>> get services => [
		Inject((m, arg) => AppService(m)),
		Inject((m, arg) => AuthService(m, this.service<AppService>())),
	];

	@override
	List<Inject<Module>> get modules => [
		Inject((m, arg) => HomeModule(m)),
		Inject((m, arg) => RegistrationModule(m, arg)),
	];

	@override
	List<Inject<Component>> get components => [
		Inject((m, arg) => MainPage(m)),
		Inject((m, arg) => SplashScreenPage(m)),
	];

	AppModule() : super(null);

	@override
  	Widget build(BuildContext context) => component<MainPage>();
}

State Storage Classes #

ValueModel #

Simple class to notify listeners when value is changed, you can modify value setting property 'value' or calling method 'updateValue'.

final ValueModel<String> description = ValueModel<String>(initialValue: 'Initial Description');
description.value = 'Another Description';
description.updateValue('Another Description');

ValuesModel #

Controlling multiple "ValueModel"

final ValuesModel packageInfo = ValuesModel({
    'name': ValueModel<String>(null),
    'version': ValueModel<String>(null),
});
packageInfo.updateValues({
    'name': 'useful_classes',
    'version': '0.0.1'
});

ValueConsumer #

Simple class to make easy to consume and receive changes notification from ValueNotifier

final ValueModel<String> description = ValueModel<String>(null);
description.value = 'Another Description';

ValueConsumer<String>(
    value: description,
    builder: (context, value) => Text(value)
);

0.0.1 #

  • Initial version.

0.0.2 #

  • Removed ValueBloc and ValuesBloc from this Package, and added in package userfil_classes

0.0.3 #

0.0.4 #

  • Added stream subscription control in controller, fixed bugs and made other improvements

0.0.5 #

  • Added ValueProvider, ValuesProvider, ListProvider, ValueConsumer and ListConsumer

Use this package as a library

1. Depend on it

Add this to your package's pubspec.yaml file:


dependencies:
  module_provider: ^0.0.5

2. Install it

You can install packages from the command line:

with Flutter:


$ flutter pub get

Alternatively, your editor might support flutter pub get. Check the docs for your editor to learn more.

3. Import it

Now in your Dart code, you can use:


import 'package:module_provider/module_provider.dart';
  
Popularity:
Describes how popular the package is relative to other packages. [more]
0
Health:
Code health derived from static analysis. [more]
100
Maintenance:
Reflects how tidy and up-to-date the package is. [more]
80
Overall:
Weighted score of the above. [more]
46
Learn more about scoring.

We analyzed this package on Oct 16, 2019, and provided a score, details, and suggestions below. Analysis was completed with status completed using:

  • Dart: 2.5.1
  • pana: 0.12.21
  • Flutter: 1.9.1+hotfix.4

Platforms

Detected platforms: Flutter

References Flutter, and has no conflicting libraries.

Health suggestions

Format lib/classes/inject.dart.

Run flutter format to format lib/classes/inject.dart.

Format lib/classes/inject_manager.dart.

Run flutter format to format lib/classes/inject_manager.dart.

Format lib/module_provider.dart.

Run flutter format to format lib/module_provider.dart.

Fix additional 9 files with analysis or formatting issues.

Additional issues in the following files:

  • lib/patterns/controller.dart (Run flutter format to format lib/patterns/controller.dart.)
  • lib/patterns/service.dart (Run flutter format to format lib/patterns/service.dart.)
  • lib/providers/list_consumer.dart (Run flutter format to format lib/providers/list_consumer.dart.)
  • lib/providers/list_provider.dart (Run flutter format to format lib/providers/list_provider.dart.)
  • lib/providers/value_consumer.dart (Run flutter format to format lib/providers/value_consumer.dart.)
  • lib/providers/value_provider.dart (Run flutter format to format lib/providers/value_provider.dart.)
  • lib/providers/values_provider.dart (Run flutter format to format lib/providers/values_provider.dart.)
  • lib/widgets/component.dart (Run flutter format to format lib/widgets/component.dart.)
  • lib/widgets/module.dart (Run flutter format to format lib/widgets/module.dart.)

Maintenance suggestions

Maintain an example. (-10 points)

Create a short demo in the example/ directory to show how to use this package.

Common filename patterns include main.dart, example.dart, and module_provider.dart. Packages with multiple examples should provide example/README.md.

For more information see the pub package layout conventions.

Package is pre-v0.1 release. (-10 points)

While nothing is inherently wrong with versions of 0.0.*, it might mean that the author is still experimenting with the general direction of the API.

Dependencies

Package Constraint Resolved Available
Direct dependencies
Dart SDK >=2.1.0 <3.0.0
flutter 0.0.0
scoped_model ^1.0.1 1.0.1
useful_classes ^0.0.3 0.0.3
Transitive dependencies
collection 1.14.11 1.14.12
meta 1.1.7
rxdart 0.22.3
sky_engine 0.0.99
typed_data 1.1.6
vector_math 2.0.8
Dev dependencies
flutter_test