dime_flutter 0.6.0 copy "dime_flutter: ^0.6.0" to clipboard
dime_flutter: ^0.6.0 copied to clipboard

Flutter support for Dime dependency injection. Will provide scoped widgets and helping methods to use Dime with in Flutter codebase.

example/lib/main.dart

import 'package:dime_flutter/dime_flutter.dart';
import 'package:flutter/material.dart';

import 'di.dart';

void main(List<String> args) {
  runApp(DimeApp());
}

class DimeApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return DimeScopeFlutter(
      scopeName: "myroot",
      modules: [
        ServiceModule(),
        UiModule(),
      ],
      child: MaterialApp(
        title: "Dime test App",
        theme: Theme.of(context).copyWith(primaryColor: Colors.amber),
        initialRoute: "/",
        routes: {"/": (ctx) => HomePage(), "/A": (_) => TestAPageScope()},
      ),
    );
  }
}

AppBar provideAppBar(BuildContext context) {
  var title = DimeFlutter.get<TitleService>(context).text;
  // it is better to wrap it with Theme object
  return AppBar(
    title: Text(title),
  );
}

class HomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    var theme =
        DimeFlutter.get<ThemeGenerator>(context).updateTheme(Theme.of(context));
    return Theme(
      data: theme,
      child: Scaffold(
        appBar: provideAppBar(context),
        body: Container(
          width: double.infinity,
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            crossAxisAlignment: CrossAxisAlignment.center,
            children: <Widget>[
              Text("Home Page"),
              ElevatedButton(
                child: Text("PAGE A"),
                onPressed: () {
                  Navigator.of(context).push(
                      MaterialPageRoute(builder: (_) => TestAPageScope()));
                },
              )
            ],
          ),
        ),
      ),
    );
  }
}

class TestAPageScope extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return DimeScopeFlutter(
        scopeName: "test-a",
        modules: [RedUiModule()..addSingle<TitleService>(TitlePageAService())],
        child: TestAPage());
  }
}

class TestAPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    var theme =
        DimeFlutter.get<ThemeGenerator>(context).updateTheme(Theme.of(context));
    return Theme(
      data: theme,
      child: Scaffold(
        appBar: provideAppBar(context),
        body: Container(
          width: double.infinity,
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            crossAxisAlignment: CrossAxisAlignment.center,
            children: <Widget>[
              Text("Test Page A"),
              ElevatedButton(
                child: Text("PAGE A 1"),
                onPressed: () {},
              )
            ],
          ),
        ),
      ),
    );
  }
}
2
likes
130
pub points
0%
popularity

Publisher

unverified uploader

Flutter support for Dime dependency injection. Will provide scoped widgets and helping methods to use Dime with in Flutter codebase.

Repository (GitHub)
View/report issues

Documentation

API reference

License

Apache-2.0 (LICENSE)

Dependencies

dime, fimber, flutter

More

Packages that depend on dime_flutter