dash 1.0.4 copy "dash: ^1.0.4" to clipboard
dash: ^1.0.4 copied to clipboard

Dash library is responsible to offer a service locator pattern that cares about provide and dispose blocs.

example/lib/main.dart

import 'package:dash/dash.dart';
import 'package:example/state_management.dart';
import 'package:flutter/material.dart';
import 'package:rxdart/rxdart.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Dash Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(title: 'Flutter and Dash Home Page'),
    );
  }
}

class MyHomeBloc extends Bloc {
  static MyHomeBloc instance() => MyHomeBloc();

  final _counter = BehaviorSubject<int>.seeded(0);
  Stream<int> get counter => _counter.stream;
  Function(int) get updateCounter => _counter.sink.add;

  void increment() => updateCounter((_counter.value ?? 0) + 1);

  @override
  void dispose() {
    _counter.close();
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({required this.title});

  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  final _bloc = $Provider.of<MyHomeBloc>();

  @override
  void dispose() {
    $Provider.dispose<MyHomeBloc>();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'You have pushed the button this many times:',
            ),
            StreamBuilder<int>(
              stream: _bloc.counter,
              builder: (context, snap) => snap.hasData
                  ? Text(
                      '${snap.data}',
                      style: Theme.of(context).textTheme.headline6,
                    )
                  : Text('loading...'),
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _bloc.increment,
        tooltip: 'Increment',
        child: Icon(Icons.add),
      ), // This trailing comma makes auto-formatting nicer for build methods.
    );
  }
}
9
likes
150
pub points
82%
popularity

Publisher

unverified uploader

Dash library is responsible to offer a service locator pattern that cares about provide and dispose blocs.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

flutter, get_it

More

Packages that depend on dash