import 'package:flutter/material.dart';

import 'package:mvc_pattern/mvc_pattern.dart';

/// Dependency Injection of 'the Controller' in the design pattern.
import 'Controller.dart';

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key}) : super(key: key);

  // Fields in a Widget subclass are always marked "final".
  static final String title = 'Flutter Demo Home Page';

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

class _MyHomePageState extends StateMVC {
  _MyHomePageState():super(Controller()){
    _con = Controller.con;
  }
  Controller _con;

  @override
  @protected
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(MyHomePage.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              MyHomePage.title,
            ),
            Text(
              '${_con.displayThis}',
              style: Theme.of(context).textTheme.display1,
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () {
          setState(_con.whatever);
        },
        tooltip: 'Increment',
        child: Icon(Icons.add),
      ),
    );
  }
}