Flutter 基础(一)入门
介绍
flutter 应用是使用dart语言开发的,作为一个跨平台框架,flutter非常像React Native ,
(1)比如flutter支持响应式编程和声明式编程。但是和React Native不同的是,flutter不需要JavaScript桥接,打打提升了整个应用的性能和应用启动时间,Dart是通过AOT技术取得了上述表现。
(2)另一方面,拥有JIT的Flutter 支持在开发期间,不需要从头构建整个应用就可以刷新ui,提高开发效率。
(3)flutter框架是建立在组件思想之上的,一切皆组件。在flutter中组建不单单指应用视图,而是整个界面甚至是整个应用。
特点
跨平台性:Liunx Android IOS Fuchsia
原生用户界面:它是原生的,体验跟性能更好
flutter是完全免费、开源的
flutter具有120fps的超高性能,因为我们原生的渲染一般使用的是CPU渲染而flutter使用的是GPU渲染,也就是说flutter有可能比原生app渲染的更快。
这里简单说下flutter与React Native的对比,Reat Native是将ui通过RN自己的虚拟机DOM转换为原生的ui,这样的转换对性能是有一定影响的,这也就是RN在list列表相关显示方面的缺陷,但RN总体上性能还是可以的,而flutter在渲染技术上选择了自己实现(GDI),flutter使用Skia 2D渲染引擎直接在GDI层面绘制页面和控件,对系统的依赖降低到最低,提供更好的跨平台兼容性和更高的性能。
环境搭建
参考:https://flutter.dev/docs/get-started/install
第一个应用
(1)import 导包
(2)main函数进入,一切皆组件,runApp方法返回MyApp组件
(3)MyApp组件继承自StatelessWidget,重写build方法,build方法中需要参数BuildContext。
(4)build方法内部又返回了MaterialApp这个组件及其他子组件。
import 'package:flutter/material.dart'; //导入flutter推荐的ui组件,material样式
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
// TODO: implement build
return MaterialApp(
title: "Hello flutter",
home: Scaffold(
appBar: AppBar(
title: Text("hello world"),
),
body: Center(
child: Text("hello world"),
),
),
);
}
}
- Veeam Backup & Replication(三):创建备份与还原备份
- 使用Go开发一个简单的服务器程序
- C++ 与设计模式学习(其一)
- xz文件压缩工具的用法
- Java 中正确使用 hashCode 和 equals 方法
- C/C++ 关于生成静态库(lib)/动态库(dll)文件如何使用(基于windows基础篇)
- openwrt将LAN口改为WAN方法
- c/c++----网站及其后门(CGI应用程序)
- C/C++深度copy和浅copy
- pycharm2016版汉化方法
- 8张图理解Java
- C/C++ 一段代码区分数组指针|指针数组|函数指针|函数指针数组
- 解决Sublime在LinuxMint下无法输入中文的问题
- 使用Redis做MyBatis的二级缓存
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 放弃dagger?Anrdoi依赖注入框架koin
- WPF开发之C#中关闭进程的方式
- R语言实现:混合正态分布EM最大期望估计法
- MongoDB 指令
- 硬件设计之 Distributed Arithmetic 一例
- JavaScript 框架学习(JQuery)
- MongoDB 部署
- 结构体对齐原则在自定义协议解析时的妙用之法
- Spring JDBC 框架一个最简单的Hello World级别的例子
- Celery 分布式框架 学习
- .NET Core + K8S + Loki 玩转日志聚合
- varint是啥你真的知道么?
- 一篇文章带你入门移动安全
- Could not load JDBC driver class [com.mysql.jdbc.Driver]
- [Bazel]自定义规则实现将多个静态库合并为一个动态库或静态库