Flutter-从入门到项目
03:fultter初体验![108b1c97c046618d4cd549d9eeadb403.png](https://i-blog.csdnimg.cn/blog_migrate/047101fd6fd5ca322733f84c7ade297e.png)
![40df6e2185071538c24f819fca2ad04c.gif](https://i-blog.csdnimg.cn/blog_migrate/fd37a733c6ea435c2727a096b66244ba.gif)
![edfb87555839ac1b5cfe3838a51c6144.png](https://i-blog.csdnimg.cn/blog_migrate/97f4ed97154d5d0d55dd668b58bcc2ac.png)
![edfb87555839ac1b5cfe3838a51c6144.png](https://i-blog.csdnimg.cn/blog_migrate/97f4ed97154d5d0d55dd668b58bcc2ac.png)
![946aee6513101f0acba89dabe5ea4379.png](https://i-blog.csdnimg.cn/blog_migrate/71b52db5a127477c51bb5a67c2c34119.png)
![21dc5ae777d31777a03bf8e93e1a7890.png](https://i-blog.csdnimg.cn/blog_migrate/e6ccac230c559fba03dc7f770321ca24.png)
Android Studio 主界面
-> Create Flutter Project
![ae51ff087dea19062d86ca3d9a4ff274.png](https://i-blog.csdnimg.cn/blog_migrate/b98dcbd1d19b83271bbc291c81cfdf41.png)
![608736d589dc99428b88fc6c157597b1.png](https://i-blog.csdnimg.cn/blog_migrate/9d798766d248ef40e66e85abab042e1f.png)
![e0eda6a8e1335caa1c59ccfbb4f43df4.png](https://i-blog.csdnimg.cn/blog_migrate/5e098ecb7d75f69df6c213cb319f8d38.png)
说明: ?上面截图的四个功能
Flutter Application
: 创建一个Flutter
应用工程Flutter plugin
: 这是为了给Android
和iOS
提供插件应用(暴露的借口)的时候使用
Flutter Package
: 创建一个Dart组件
发布到pub
来提供便捷开发 类似一些三方库Flutter Module
: 一般用来做混合开发,嵌入到Android
和iOS
工程当中!
创建完毕我们就可以初体验运行一下 感受一下 Flutter 经典默认页面
![424dbfd8616792c953ce2fab506d6c9e.png](https://i-blog.csdnimg.cn/blog_migrate/7e5097c3b69732ff8d4ae854033f43fd.png)
![608736d589dc99428b88fc6c157597b1.png](https://i-blog.csdnimg.cn/blog_migrate/9d798766d248ef40e66e85abab042e1f.png)
![e0eda6a8e1335caa1c59ccfbb4f43df4.png](https://i-blog.csdnimg.cn/blog_migrate/5e098ecb7d75f69df6c213cb319f8d38.png)
![edfb87555839ac1b5cfe3838a51c6144.png](https://i-blog.csdnimg.cn/blog_migrate/97f4ed97154d5d0d55dd668b58bcc2ac.png)
![edfb87555839ac1b5cfe3838a51c6144.png](https://i-blog.csdnimg.cn/blog_migrate/97f4ed97154d5d0d55dd668b58bcc2ac.png)
![946aee6513101f0acba89dabe5ea4379.png](https://i-blog.csdnimg.cn/blog_migrate/71b52db5a127477c51bb5a67c2c34119.png)
![21dc5ae777d31777a03bf8e93e1a7890.png](https://i-blog.csdnimg.cn/blog_migrate/e6ccac230c559fba03dc7f770321ca24.png)
命令式编程:命令“机器”如何去做事情(how),这样不管你想要的是什么(what),它都会按照你的命令实现。
声明式编程:告诉“机器”你想要的是什么(what),让机器想出如何去做(how)。
可能你这里通过这个还是无法明白什么是 命令式编程
什么是 声明式编程
我们以一个视图UI 做为?说明一下
首先我们看看 命令式编程
的代表 : Object-C
UIView *view = [[UIView alloc] init]; view.frame = self.view.bounds; view.backgroundColor = [UIColor orangeColor];
我们要告诉“机器”: view的布局是 self.view.bounds
view的背景色是 orangeColor
如果需要改变视图,你通常需要使用选择器 findViewById
或类似函数获取到 ViewB
的实例 view
和所有权,并调用相关的修改的方法(并隐式的使其失效)
view.backgroundColor = [UIColor blueColor];
由于 UI 真实的来源可能比实例 view
本身的存活周期更长,你可能还需要在 view
的构造函数中复制此配置
在声明式风格中,视图配置(如 Flutter
的 Widget
)是不可变的,它只是轻量的“蓝图”。要改变 UI
,widget
会在自身上触发重建(在 Flutter
中最常见的方法是在 StatefulWidgets
组件上调用 setState()
)并构造一个新的 Widget
子树
// Declarative stylereturn ViewB( color: red, child: ViewC(...),)
很明显两个模式侧重的点是完全不一样的! 如果还有不太理解的, 不妨都看两遍就会有感觉了!!!
![edfb87555839ac1b5cfe3838a51c6144.png](https://i-blog.csdnimg.cn/blog_migrate/97f4ed97154d5d0d55dd668b58bcc2ac.png)
![edfb87555839ac1b5cfe3838a51c6144.png](https://i-blog.csdnimg.cn/blog_migrate/97f4ed97154d5d0d55dd668b58bcc2ac.png)
![946aee6513101f0acba89dabe5ea4379.png](https://i-blog.csdnimg.cn/blog_migrate/71b52db5a127477c51bb5a67c2c34119.png)
![21dc5ae777d31777a03bf8e93e1a7890.png](https://i-blog.csdnimg.cn/blog_migrate/e6ccac230c559fba03dc7f770321ca24.png)
接下来我们开始编写一个简单的代码
?① flutter 文本组件体验?
// 导入系统包 : 作用类似 #import import 'package:flutter/material.dart';// 程序运行的 main 函数 (入口0void main() { // 应用程序运行的函数 类比: UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); // 因为在 Flutter 世界里面 都是各种部件 // 这里我们简单使用一下 Center 来写一个 文本 runApp(Center( child: Text( '和谐学习,不急不躁', // 文本 textDirection: TextDirection.ltr, // 对齐方式 style: TextStyle( fontSize: 40.0, // 字体大小 color: Colors.red, // 红色字体 fontWeight: FontWeight.w400, // 字体的粗细 ), )));}
是不是感觉很清爽, Flutter 本身在编写代码还是比较轻松的, 毕竟有没有发现这样的语法结构越来越趋于 大前端一统...
?② flutter 导航栏体验?
class KCBar extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( debugShowCheckedModeBanner: false, home: Scaffold( // 类似 nav appBar: AppBar( // 导航栏 title: Text('KCFlutterBar',style: TextStyle(color: Colors.white),), ), body: KCWidget(), floatingActionButton: FloatingActionButton(), floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked, floatingActionButtonAnimator: FloatingActionButtonAnimator.scaling, ), theme: ThemeData( primaryColor: Colors.orange ), ); }}
下面我们看看显示的效果,还是比较 OK!
聪明的你们估计写到你就会发现 编码还是有点不太适应. 我这里给大家推荐几个快捷键,方便大家快速优美编程
Command + o
: 全局搜索command + option + l
: 格式化代码command + l
: 注释代码command + -
: 折叠和展开代码command + [
: 代码返回command + ]
: 代码前进cmd + C / cmd + delete
: 删除行ctr + alt + I
: 自动缩进对齐opt + sft + up/down
: 上下移动代码ctrl + tab
: 切换文件shift + command + enter
: 行尾自动添加分号,if后面自动加“(){ }”cmd + N
: 快速生成getter/setter方法,构造方法,toString()方法等cmd + J
: 快速生成模版代码块,如if,while,returnopt + cmd + T
: Surround with快速调出if,for,try…catch,while等环绕代码opt + ctr + o
: 删除未使用的importoption + enter
: 自动导入用到的包stless
: 创建新的StatelessWidget
stful
: 创建新的StatefulWidget
?③ flutter listView 列表界面?
class KCListView extends StatelessWidget { Widget _itemForRow(BuildContext context, int index) { return Container( color: Colors.white, margin: EdgeInsets.fromLTRB(10, 10, 10, 10), child: Column( children: [ Image.network(carDatas[index].imageUrl), SizedBox(height: 10), Text( carDatas[index].name, style: TextStyle( fontSize: 18.0, fontWeight: FontWeight.w800, fontStyle: FontStyle.values[1]), ), SizedBox(height: 10), ], ), ); } @override Widget build(BuildContext context) { return ListView.builder( itemBuilder: _itemForRow, itemCount: carDatas.length, ); }}
通过导航栏样式加载列表结构, 从而加载数据其实如果你跟着写到这里应该很容易可以感受到声明式语法的魅力! 只有你掌握这种写法 再加上以前对UI布局的理解就很容易写出应用 (⚠️ 弹性盒子布局 Flex
⚠️)
![608736d589dc99428b88fc6c157597b1.png](https://i-blog.csdnimg.cn/blog_migrate/9d798766d248ef40e66e85abab042e1f.png)
这里就只贴出一些需要感受的代码 如果你也对着敲一敲代码,可以移步到 github: Flutter专栏代码 这里面记录整个专栏的代码 一直保持更新 喜欢的可以点赞?收藏
![edfb87555839ac1b5cfe3838a51c6144.png](https://i-blog.csdnimg.cn/blog_migrate/97f4ed97154d5d0d55dd668b58bcc2ac.png)
![edfb87555839ac1b5cfe3838a51c6144.png](https://i-blog.csdnimg.cn/blog_migrate/97f4ed97154d5d0d55dd668b58bcc2ac.png)
![946aee6513101f0acba89dabe5ea4379.png](https://i-blog.csdnimg.cn/blog_migrate/71b52db5a127477c51bb5a67c2c34119.png)
![21dc5ae777d31777a03bf8e93e1a7890.png](https://i-blog.csdnimg.cn/blog_migrate/e6ccac230c559fba03dc7f770321ca24.png)
这一篇关于 Flutter 的初体验可能因为你还只是一个 Flutter小白 感受不强,但是没有关系 多敲敲就有感受了,这个东西真心的敲得越多越有感受,最好敲出肌肉记忆!
Flutter 的代码的简洁性还是很强的.
你会慢慢爱上敲 Flutter代码的!
来吧! 我们一起敲
Flutter
: github: Flutter?网址:https://github.com/LGCooci/KCFlutter
下一篇开始我们会切入到
Flutter细节
! 点赞收藏不迷路哦
![ef83ec7ada687a42ff612a6ac25a3011.png](https://i-blog.csdnimg.cn/blog_migrate/ba7f8166018922a98dd58b7478eb959a.jpeg)
![5fa8e59362bdb269c5c514a5914898f7.gif](https://i-blog.csdnimg.cn/blog_migrate/5d7ae9ff9bdc1cfb302b0847c3a413f3.gif)