Flutter(三)-Counter 计数器项目示例说明

Android Studio  创建Flutter 计数器项目:

创建的项目结构如上图:

android 文件夹和我们原生app 的目录是一致的

ios 文件是ios 平台的原生项目结构

fluter 项目文件在哪呢,打开lib 文件夹,如下图:

这个文件夹包含我们Flutter 的项目文件

 

pubspec.yaml 这个文件是管理我们Flutter 的依赖

先提供一下项目源码:

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Counter(),
    );
  }
}

class Counter extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    return _CounterState();
  }
}

class _CounterState extends State<Counter> {
  int _counter = 0;

  void _increment() {
    setState(() {
      _counter++;
    });
  }

  void _min() {
    setState(() {
      _counter--;
    });
  }


  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Scaffold(
      appBar: AppBar(
        title: Text('Counter'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text('Counter is '),
            Text('$_counter'),
            Center(
              child: Center(
                child: Row(
                  mainAxisAlignment: MainAxisAlignment.center,
                  children: <Widget>[
                    RaisedButton(
                      onPressed: _min,
                      child: Text('min'),
                    ),
                    Container(
                      padding: const EdgeInsets.fromLTRB(16.0, 0, 0, 0),
                      child:  RaisedButton(
                        onPressed: _increment,
                        child: Text('add'),
                      ),
                    ),
                  ],
                ),
              ),
            ),
          ],
        ),
      ),
    );
  }
}

项目分析:

import 'package:flutter/material.dart';

看到import 关键字,第一时间想到的是引入相关的包 

void main() {
  runApp(MyApp());
}

main 函数是程序的入口,每个单独的dart 文件如果包含 main() 函数可单独运行

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Counter(),
    );
  }
}

MyApp 继承了 StateLessWidget   

在Flutter 中所有的组件都可以看做为 widget , widget 分为状态可变Widget(StatefulWidget) 和 不可变 widget (StatelessWidget),该项目中计数器用_counter 来计数 采用 statefulWidget,

class Counter extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    return _CounterState();
  }
}

重写 createState 方法 ,同时需要创建一个State<Counter > 代码如下:

class _CounterState extends State<Counter>{}

以下两个方法是计数器增加和减小

  void _increment() {
    setState(() {
      _counter++;
    });
  }

  void _min() {
    setState(() {
      _counter--;
    });
  }

setState方法的作用是通知Flutter框架,有状态发生了改变,Flutter框架收到通知后,会执行build方法来根据新的状态重新构建界面, Flutter 对此方法做了优化,使重新执行变的很快,所以你可以重新构建任何需要更新的东西,而无需分别去修改各个widget。

以上代码 _counter 中"_" 标识私有变量

Widget build(BuildContext context) {}

该方法是用来构建布局.

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值