provider_mvc 0.2.4 copy "provider_mvc: ^0.2.4" to clipboard
provider_mvc: ^0.2.4 copied to clipboard

discontinuedreplaced by: tilde
outdated

Flutter Provider MVC Implementation that make state management easier.

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:provider_mvc/controller.dart';
import 'package:provider_mvc/view.dart';

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

class Value {
  int value = 0;
}

class CounterApp extends StatelessWidget {
  final _counter = CounterView();

  @override
  Widget build(BuildContext context) => MaterialApp(
        title: 'Flutter Demo',
        theme: ThemeData(
          primarySwatch: Colors.blue,
        ),
        home: Scaffold(
          appBar: AppBar(
            title: Text('Flutter Demo Home Page'),
          ),
          body: Center(
            child: _counter,
          ),
          floatingActionButton: FloatingActionButton(
            onPressed: () {
              _counter.controller.increment();
              //if the view's controller is registred you can use this
              //Controller.of<CounterController>().single.increment();
            },
            tooltip: 'Increment',
            child: Icon(Icons.add),
          ),
        ),
      );
}

class CounterController extends Controller {
  final Value _count = Value();

  //CounterController({String tag}) : super(tag: tag);

  int get count => _count.value;

  /*set count(int v) {
    _count = v;
    refresh();
  }*/

  void reset() {
    _count.value = 0;
    refresh();
  }

  void increment() {
    _count.value++;
    refresh();
  }
}

class CounterView extends View<CounterController> {
  CounterView() : super(controller: CounterController());

  //To register a controller while view creation's
  /*CounterView()
      : super(
            controller: Controller.put<CounterController>(CounterController()));*/

  @override
  Widget builder(
          BuildContext context, CounterController controller, Widget widget) =>
      Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: <Widget>[
          Text(
            'You have pushed the button this many times:',
          ),
          Text(
            '${controller.count}',
            style: Theme.of(context).textTheme.headline4,
          ),
          RaisedButton(
            child: Text("Reset"),
            onPressed: controller.reset,
          )
        ],
      );

  /*@override
  CounterController create(BuildContext context) =>
      Controller.put<CounterController>(CounterController());*/
}
1
likes
0
pub points
0%
popularity

Publisher

unverified uploader

Flutter Provider MVC Implementation that make state management easier.

Repository (GitHub)
View/report issues

License

unknown (LICENSE)

Dependencies

flutter, provider

More

Packages that depend on provider_mvc