初识Flutter语言

2020-09-25  本文已影响0人  爱写代码的小王子

本篇文章主要记录Flutter语言简介,以及实现一个小demo
主要知识点:

Flutter语言的简介
FlutterGoogle推出并开源的移动应用开发框架,主打跨平台、高保真、高性能。开发者可以通过 Dart语言开发 App,一套代码同时运行在 iOSAndroid平台。 Flutter提供了丰富的组件、接口,开发者可以很快地为 Flutter添加 native扩展。同时 Flutter还使用 Native引擎渲染视图,这无疑能为用户提供良好的体验。

使用Flutter语言实现一个计数器

运行效果如下:


image.png

该计数器示例中,每点击一次右下角带“+”号的悬浮按钮,屏幕中央的数字就会加1

import 'package:flutter/material.dart';

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

第一行代码导入了Material UI组件库包,Material是一种标准的移动端和web端的视觉设计语言, Flutter默认提供了一套丰富的Material风格的UI组件。

然后是应用结构

class MyApp extends StatelessWidget {

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      //应用名称
      title: 'Flutter Demo',
      theme: ThemeData(
       //蓝色主题
        primarySwatch: Colors.blue,
        visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      //应用首页路由
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

最后是首页

class MyHomePage extends StatefulWidget {
     MyHomePage({Key key, this.title}) : super(key: key);
     final String title;
     @override
     _MyHomePageState createState() => new _MyHomePageState();
   }

   class _MyHomePageState extends State<MyHomePage> {
    ...
   }

MyHomePageFlutter应用的首页,它继承自StatefulWidget类,表示它是一个有状态的组件(Stateful widget)。简单认为有状态的组件(Stateful widget)和无状态的组件(Stateless widget)有两点不同:

接下来,我们看看_MyHomePageState中都包含哪些东西:

int _counter = 0; //用于记录按钮点击的总次数
void _incrementCounter() {
  setState(() {
     _counter++;
  });
}

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

构建UI界面
构建UI界面的逻辑在build方法中,当MyHomePage第一次创建时,_MyHomePageState类会被创建,当初始化完成后,Flutter框架会调用Widget的build方法来构建widget树,最终将widget树渲染到设备屏幕上。所以,我们看看_MyHomePageStatebuild方法中都干了什么事:

 Widget build(BuildContext context) {
    return new Scaffold(
      appBar: new AppBar(
        title: new Text(widget.title),
      ),
      body: new Center(
        child: new Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            new Text(
              'You have pushed the button this many times:',
            ),
            new Text(
              '$_counter',
              style: Theme.of(context).textTheme.headline4,
            ),
          ],
        ),
      ),
      floatingActionButton: new FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: new Icon(Icons.add),
      ),
    );
  }

现在,我们将整个计数器执行流程串起来:当右下角的 floatingActionButton按钮被点击之后,会调用_incrementCounter方法。在_incrementCounter方法中,首先会自增_counter计数器(状态),然后setState会通知Flutter框架状态发生变化,接着,Flutter框架会调用build方法以新的状态重新构建UI,最终显示在设备屏幕上。

上一篇 下一篇

猜你喜欢

热点阅读