Flutter-从入门到项目 03: Flutter初体验

Flutter 专题目录汇总: 这个目录方便大家快速查询你要学习的内容!!!

🎅一、创建一个Flutter 工程🎅

下面我们通过 Android Studio 安装的 Flutter插件 创建 Flutter 工程

Android Studio 主界面 -> Create Flutter Project

说明: 👆上面截图的四个功能

  • Flutter Application : 创建一个 Flutter 应用工程
  • Flutter plugin : 这是为了给 AndroidiOS 提供插件应用(暴露的借口)的时候使用
  • Flutter Package : 创建一个 Dart组件 发布到 pub 来提供便捷开发 类似一些三方库
  • Flutter Module : 一般用来做混合开发,嵌入到 AndroidiOS 工程当中!

创建完毕我们就可以初体验运行一下 感受一下 Flutter 经典默认页面

🎅二、Flutter 声明式语法🎅

  • 命令式编程:命令“机器”如何去做事情(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 的构造函数中复制此配置

在声明式风格中,视图配置(如 FlutterWidget )是不可变的,它只是轻量的“蓝图”。要改变 UIwidget 会在自身上触发重建(在 Flutter 中最常见的方法是在 StatefulWidgets 组件上调用 setState())并构造一个新的 Widget 子树。

// Declarative style
return ViewB(
  color: red,
  child: ViewC(...),
)

很明显两个模式侧重的点是完全不一样的! 如果还有不太理解的, 不妨都看两遍就会有感觉了!!!

🎅三、Flutter 工程初体验🎅

对上面声明式语法有一定的理解之后,我们开始玩玩代码,首先默认工程你可能看懂代码,但是只是一层粗略的看,现在我们学习,不防一点一点来! 先干掉整个程序一些代码,留下👇

接下来我们开始编写一个简单的代码

🎄① flutter 文本组件体验🎄

// 导入系统包 : 作用类似 #import <UIKit/UIKit.h>
import 'package:flutter/material.dart';

// 程序运行的 main 函数 (入口0
void 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,return
  • opt + cmd + T : Surround with快速调出if,for,try…catch,while等环绕代码
  • opt + ctr + o: 删除未使用的import
  • option + 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: <Widget>[
          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 ⚠️)

这里就只贴出一些需要感受的代码 如果你也对着敲一敲代码,可以移步到 github: Flutter专栏代码 这里面纪录整个专栏的代码 一直保持更新 喜欢的可以点赞👍收藏

🎅四、总结🎅

这一篇关于 Flutter 的初体验可能因为你还只是一个 Flutter小白 感受不强,但是没有关系 多敲敲就有感受了,这个东西真心的敲得越多越有感受,最好敲出肌肉记忆! Flutter 的代码的简洁性还是很强的.你会慢慢爱上敲 Flutter代码的!

来吧! 我们一起敲Flutter : github: Flutter专栏代码

下一篇开始我们会切入到 Flutter细节! 点赞收藏不迷路哦

干货地址:喜欢可以一键三连

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容