学习Flutter的第一个实例:

import 'package:flutter/material.dart';
void main() {runApp(new Center(child: new Text('你好,世界!', textDirection: TextDirection.ltr)));
}

上面实例中只使用了runApp函数,runApp函数接受指定的控件(Widget),并使其作为控件树(widget tree)的根控件。控件(Widget)定义一个元素(Element)的配置,在Flutter框架的层次结构中处于核心层。本实例中,控件树(widget tree)包含两个控件,Center控件使其子控件处于中间位置,Text控件打印文本内容。runApp函数强制将根控件覆盖屏幕,这意味着文本“你好,世界!”将显示在屏幕中心。

在写应用程序时,经常会使用StatelessWidget和StatefulWidget编写新控件,两者的差别在于你是否要管理控件的状态。一个控件的主要任务是实现build函数,定义控件中其他较低层次的控件。build函数将依次构建这些控件,直到底层渲染对象。

基本控件

  • Text:文本控件,在应用中创建各种样式的文本。

  • Row,Column:Flex控件,可以创建水平(Row)或垂直(Column)方向的布局,是基于Web的flexbox的布局模式设计的。

  • Stack:非线性布局(水平或垂直),控件可以堆叠在其他控件上,可以使用Positioned控件控制Stack相对顶部、右部、底部和左部的位置,是基于Web的absolute定位的布局模式。

  • Container:创建矩形的可视元素,可以用BoxDecoration来设计样式,比如背景、边框和阴影,Container也有边距、填充和大小限制,另外,还可以在三维空间利用矩阵进行变换。

结合基本控件与其他控件的实例:

import 'package:flutter/material.dart';
class MyAppBar extends StatelessWidget {MyAppBar({this.title});final Widget title;@overrideWidget build(BuildContext context) {return new Container(height: 56.0,padding: const EdgeInsets.symmetric(horizontal: 8.0),decoration: new BoxDecoration(color: Colors.blue[500]),child: new Row(children: <Widget>[new IconButton(icon: new Icon(Icons.menu),tooltip: '导航菜单',onPressed: null,),new Expanded(child: title,),new IconButton(icon: new Icon(Icons.search),tooltip: '搜索',onPressed: null,),],),);}
}
class MyScaffold extends StatelessWidget {@overrideWidget build(BuildContext context) {return new Material(child: new Column(children: <Widget>[new MyAppBar(title: new Text('实例标题', style: Theme.of(context).primaryTextTheme.title),),new Expanded(child: new Center(child: new Text('你好,世界!'),),),],),);}
}
void main() {runApp(new MaterialApp(title: '我的应用',home: new MyScaffold(),));
}

执行前确认flutter.yaml文件内有“uses-material-design: true”,允许使用预定的Material icons。

name: myapp
uses-material-design: true

许多控件为了继承主题数据,需要MaterialApp才能正常显示,因此,运行一个MaterialApp应用。

MyAppBar控件创建了一个Container(容器),高度为56设备无关像素(device-independent pixels),内部左右填充8像素(pixels)。在容器内部,MyAppBar为子控件设置Row(水平)布局,中间的title控件被设置成Expanded,Expanded的作用是展开Row、Column和Flex的子控件,意味它可以使用剩余的所有空间。

MyScaffold控件为子控件设置垂直布局,在垂直顶部放置一个MyAppBar的实例,将MyAppBar的Text控件作为标题使用,将控件作为参数传递给其他控件非常方便实用的,你可以创建通用的控件,以各种方式重复的使用。最后,MyScaffold使用Expanded,用一个中心文本来填充剩余的空间。

Flutter基础—第一个Flutter实例相关推荐

  1. JUnit基础及第一个单元测试实例(JUnit3.8)

    JUnit基础及第一个单元测试实例(JUnit3.8) 单元测试 单元测试(unit testing) ,是指对软件中的最小可测试单元进行检查和验证. 单元测试不是为了证明您是对的,而是为了证明您没有 ...

  2. Flutter基础—你好,Flutter!

    什么是Flutter Flutter是一个移动应用程序的软件开发工具包(SDK),用一个代码库构建高性能.高保真的iOS和Android应用程序.目标是使开发人员能够为Android和iOS提供自然的 ...

  3. 【Flutter -- 基础组件】Flutter 导航栏

    文章目录 1. TabBar 1.1 代码 1.2 效果图 2. BottomNavigationBar 2.1 构建底部标签 2.2 创建导航栏 2.3 效果图 1. TabBar Flutter ...

  4. Flutter之第一个 Flutter App(四)

    Flutter开发文档官网英文版 初次体验Flutter:创建Flutter应用 hello 开始之前,检查一下环境: 如上图,环境正常. VS Code创建Flutter应用 1.启动 VS Cod ...

  5. JUnit基础及第一个单元测试实例

    单元测试 单元测试(unit testing) ,是指对软件中的最小可测试单元进行检查和验证. 单元测试不是为了证明您是对的,而是为了证明您没有错误. 单元测试主要是用来判断程序的执行结果与自己期望的 ...

  6. Flutter基础入门

    文章目录 一.Flutter基础知识 1.Flutter简介和发展历史 2.Flutter安装和配置 3.Dart语言基础知识 Dart语言特性 Dart基本语法 空安全 Null safety Da ...

  7. Flutter基础(四)开发Flutter应用前需要掌握的Basic Widget

    本文首发于公众号「刘望舒」 关联系列 ReactNative入门系列 React Native组件 Flutter基础系列 前言 学完了Dart语言,接下来就可以学习Widget了,Flutter的U ...

  8. 12_第一个Flutter程序

    2019独角兽企业重金招聘Python工程师标准>>> 使用 package 在这一步中,你将开始使用一个名为 english_words 的开源软件包,其中包含数千个最常用的英文单 ...

  9. flutter 基础知识点总结

    前提:从事开发已经十年了,PC开发/Android开发/后端开发,初级/中级/高级/架构师,成员/组长/开发负责人,以及各种考证和阶段目标计划-,一路走来喜怒哀乐/酸甜苦辣都体验了. 人无远虑必有近忧 ...

最新文章

  1. DBSCAN的两个核心参数是什么?如何获取最佳参数?如何可视化获取的过程?
  2. 如何手动的用jigloo设计器关联java界面文件 jigloo 设计器失去关联解决
  3. Asigra无代理备份:“云”数据保护的先行者
  4. [快速入门MATLAB]MATLAB常见问题及解答汇总
  5. OpenCV运行对象检测深度学习网络的实例(附完整代码)
  6. 定义应用程序的基础--模式(Bridge-桥接,Factory-工厂)
  7. affine工程难点、亮点汇总
  8. Linux常用命令和vi,gdb的使用
  9. Android系统Recovery工作原理之使用update.zip升级过程分析(二)---u...
  10. kernel command line 参数详解
  11. 【洛谷】NOIP2018原创模拟赛DAY1解题报告
  12. 计算机网络自顶向下WireShark实验:TCP
  13. clearcase 与 git的区别
  14. 安装mysql不是Mariadb_解决centos7 中 使用mariadb 安装mysql不成功的问题
  15. 关于PHPExcel导出单元格换行的问题
  16. 【优秀论文解读】UV-SLAM: Unconstrained Line-based SLAM Using Vanishing Points for Structural Mapping
  17. 面试官:线上服务CPU飙高怎么排查?
  18. firewall 端口转发
  19. ELK技术栈-Logstash的详细使用
  20. MVC架构实现简易留言管理系统

热门文章

  1. 2013年蓝桥杯题集C本科B
  2. RecSys Challenge 历年推荐赛题汇总
  3. Node单线程高并发原理
  4. 带黑洞的随机游走问题
  5. Java中List判空问题白话详解
  6. 深度学习之权重初始化
  7. 数据结构 (一) ----- 数据结构基本概念基于数组实现线性表
  8. 【SKILLS】拯救你的----连读
  9. extjs JsonStore加载数据,Combobox只显示最后一项值问题
  10. 【算法】组合数学——排列数生成算法详解(一)