flutter 计数器

2019-10-09  本文已影响0人  CaptainRoy
计数器
import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text("计数器"),
        ),
        body: HomeBody(),
      ),
    );
  }
}

class HomeBody extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    print("HomeBody的build方法");
    return MyCounterWidget();
  }
}

class MyCounterWidget extends StatefulWidget {

  MyCounterWidget() {
    print("执行MyCounterWidget的构造方法");
  }

  @override
  State<StatefulWidget> createState() {
    // TODO: implement createState
    print("执行MyCounterWidget的createState方法");
    return MyCounterState();
  }
}

class MyCounterState extends State<MyCounterWidget> {
  int counter = 0;

  MyCounterState() {
    print("执行MyCounterState的构造方法");
  }

  @override
  void initState() {
    // TODO: implement initState
    super.initState();
    print("执行MyCounterState的init方法");
  } 

  @override
  void didChangeDependencies() {
    // TODO: implement didChangeDependencies
    super.didChangeDependencies();
    print("执行MyCounterState的didChangeDependencies方法");
  }

  @override
  Widget build(BuildContext context) {
    print("执行MyCounterState的build方法");
    // TODO: implement build
    return Center(
      child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: <Widget>[
          RaisedButton(
            color: Colors.red,
            child: Text("清零", style: TextStyle(fontSize: 18,color: Colors.white),),
            onPressed: () {
              setState(() {
                counter = 0;
              });
            },
          ),
          Row(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              RaisedButton(
                color: Colors.blue,
                child: Text("+1",style: TextStyle(fontSize: 18,color: Colors.white),),
                onPressed: () {
                  setState(() {
                    counter++;
                  });
                },
              ),
              RaisedButton(
                color: Colors.orange,
                child: Text("-1",style: TextStyle(fontSize: 18,color: Colors.white),),
                onPressed: () {
                  setState(() {
                    counter--;
                  });
                },
              ),
            ],
          ),
          Text("当前计数: $counter",style: TextStyle(fontSize: 30),),
        ],
      )
    );
  }

  @override
  void didUpdateWidget(MyCounterWidget oldWidget) {
    // TODO: implement didUpdateWidget
    super.didUpdateWidget(oldWidget);
    print("执行MyCounterState的didUpdateWidget方法");
  }

  @override
  void dispose() {
    // TODO: implement dispose
    super.dispose();
    print("执行MyCounterState的dispose的方法");
  }

}
上一篇 下一篇

猜你喜欢

热点阅读