Flutter基础—第一个Flutter实例
学习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实例相关推荐
- JUnit基础及第一个单元测试实例(JUnit3.8)
JUnit基础及第一个单元测试实例(JUnit3.8) 单元测试 单元测试(unit testing) ,是指对软件中的最小可测试单元进行检查和验证. 单元测试不是为了证明您是对的,而是为了证明您没有 ...
- Flutter基础—你好,Flutter!
什么是Flutter Flutter是一个移动应用程序的软件开发工具包(SDK),用一个代码库构建高性能.高保真的iOS和Android应用程序.目标是使开发人员能够为Android和iOS提供自然的 ...
- 【Flutter -- 基础组件】Flutter 导航栏
文章目录 1. TabBar 1.1 代码 1.2 效果图 2. BottomNavigationBar 2.1 构建底部标签 2.2 创建导航栏 2.3 效果图 1. TabBar Flutter ...
- Flutter之第一个 Flutter App(四)
Flutter开发文档官网英文版 初次体验Flutter:创建Flutter应用 hello 开始之前,检查一下环境: 如上图,环境正常. VS Code创建Flutter应用 1.启动 VS Cod ...
- JUnit基础及第一个单元测试实例
单元测试 单元测试(unit testing) ,是指对软件中的最小可测试单元进行检查和验证. 单元测试不是为了证明您是对的,而是为了证明您没有错误. 单元测试主要是用来判断程序的执行结果与自己期望的 ...
- Flutter基础入门
文章目录 一.Flutter基础知识 1.Flutter简介和发展历史 2.Flutter安装和配置 3.Dart语言基础知识 Dart语言特性 Dart基本语法 空安全 Null safety Da ...
- Flutter基础(四)开发Flutter应用前需要掌握的Basic Widget
本文首发于公众号「刘望舒」 关联系列 ReactNative入门系列 React Native组件 Flutter基础系列 前言 学完了Dart语言,接下来就可以学习Widget了,Flutter的U ...
- 12_第一个Flutter程序
2019独角兽企业重金招聘Python工程师标准>>> 使用 package 在这一步中,你将开始使用一个名为 english_words 的开源软件包,其中包含数千个最常用的英文单 ...
- flutter 基础知识点总结
前提:从事开发已经十年了,PC开发/Android开发/后端开发,初级/中级/高级/架构师,成员/组长/开发负责人,以及各种考证和阶段目标计划-,一路走来喜怒哀乐/酸甜苦辣都体验了. 人无远虑必有近忧 ...
最新文章
- DBSCAN的两个核心参数是什么?如何获取最佳参数?如何可视化获取的过程?
- 如何手动的用jigloo设计器关联java界面文件 jigloo 设计器失去关联解决
- Asigra无代理备份:“云”数据保护的先行者
- [快速入门MATLAB]MATLAB常见问题及解答汇总
- OpenCV运行对象检测深度学习网络的实例(附完整代码)
- 定义应用程序的基础--模式(Bridge-桥接,Factory-工厂)
- affine工程难点、亮点汇总
- Linux常用命令和vi,gdb的使用
- Android系统Recovery工作原理之使用update.zip升级过程分析(二)---u...
- kernel command line 参数详解
- 【洛谷】NOIP2018原创模拟赛DAY1解题报告
- 计算机网络自顶向下WireShark实验:TCP
- clearcase 与 git的区别
- 安装mysql不是Mariadb_解决centos7 中 使用mariadb 安装mysql不成功的问题
- 关于PHPExcel导出单元格换行的问题
- 【优秀论文解读】UV-SLAM: Unconstrained Line-based SLAM Using Vanishing Points for Structural Mapping
- 面试官:线上服务CPU飙高怎么排查?
- firewall 端口转发
- ELK技术栈-Logstash的详细使用
- MVC架构实现简易留言管理系统