Flutter 初体验

《Flutter 初体验》

媒介

这两年 Flutter 人气越来越高, 作为一个不停奋进的前端小靓仔, 不与时俱进怎样能行。 怀着如许的目标, 就最先了Flutter的发明之旅。

第一步当然是要想好做个啥东西, 有个好的出发点就胜利了一半, 不至于做到一半就不想做。

想了一下, 决议把之前做的一个web版的运用,用Flutter 完成一遍。

每一个部份都都许多内容, 每一个部份都能够零丁成章, 为了防止文章太长,影响浏览体验, 每一部份就不细讲, 以后会以自力文章的情势分享。

别的,本文代码已上传至Github: 代码地点,假如本文对你有协助,愿望能点个🌟, :)

底本的模样是如许的:

《Flutter 初体验》

就是一个查询物流进度的一个东西, 输入个单号, 查一下。就用 Flutter 把这个完成一遍。

空话不多说, 搞起。

设置开辟环境。

非本文重点, 略过。

细致设置可参考[官方网站][2]

构建UI

着手第一步,先写个页面出来熟习下语法。

经由一番操纵: 
写出来了第一个页面:

《Flutter 初体验》

代码在这里: HomePage

刚最先写的时刻挺难熬痛苦的,觉得很不天真, 不能不叹息 Html 的表现力之强。

种种组件分的很细, 按功用分成了差别的品种:

规划类Widget

仅仅一个规划类就细分为:

  • 线性规划Row和Column
  • 弹性规划
  • 流式规划
  • 层叠规划

背面另有容器类,转动类, …

《Flutter 初体验》

另有个比较憎恶的题目是设置元素的背景色, 设计师给的背景色平常都是 #abcdef, 或许rgb(a),
在Flutter里,就不是很好办了, 非常使人头疼, 假如有朋侪有比较轻易的方法能够留下批评。

一样的套路, 把第二页也写了:

《Flutter 初体验》

本页代码:DetailPage

UI 的部份很好写, 即使没什么基本也能照着文档很快写完, 而且Flutter 还为Web开辟者供应了雄厚的示例

背面我们要做的就是接入数据和状况

数据和状况治理

数据

这一步险些每一个新手都邑遇到题目, 这里就把一个最罕见的示例分享出来。

本文的代码就是一个简朴完全的示例:

演示了怎样要求数据, 剖析数据, 衬着数据。

比方剖析Response:

class TrackingResponse {
  final String message;
  final int retcode;
  final Object data;

  TrackingResponse({this.message, this.retcode, this.data});

  factory TrackingResponse.fromJson(json) {
    return TrackingResponse(
        message: json['message'], retcode: json['retcode'], data: json['data']);
  }
}

剖析一个罕见的数据对象:

{
    deliveryType: '',
    currentStatus: '',
    // ...
    trackingList: [
      {
          a: '',
          // ...
      }
    ]
}
class TrackingData {
  final String deliveryType;
  final String currentStatus;
  final String phone;
  final String recipientName;
  final String slsTrackingNumber;
  final List<TrackingItem> trackingList;

  TrackingData({
    this.deliveryType,
    this.currentStatus,
    this.trackingList,
    this.phone,
    this.recipientName,
    this.slsTrackingNumber
  });

  factory TrackingData.fromJson(Map<String, dynamic> json) {
    
    var list = json['tracking_list'] as List;
    List <TrackingItem> trackingList = list.map((i) => TrackingItem.fromJson(i)).toList();

    return TrackingData(
      currentStatus: json['current_status'],
      deliveryType: json['delivery_type'],
      trackingList: trackingList,
      phone: json['phone'],
      recipientName: json['recipient_name'],
      slsTrackingNumber: json['sls_tracking_number']
    );
  }
}

class TrackingItem {
  final String status;
  final int timestamp;
  final String message;

  TrackingItem({this.status, this.timestamp, this.message});

  factory TrackingItem.fromJson(Map<String, dynamic> parsedJson) {
    return TrackingItem(
      status: parsedJson['status'],
      timestamp: parsedJson['timestamp'],
      message: parsedJson['message']
    );
  }
}

别的引荐一个越发细致的数据剖析文章: 在 Flutter 中剖析庞杂的 JSON

状况治理

这里有一篇不错的文章, 人人能够看一下: List of state management approaches

另有怎样运用 Scoped ModelRedux 治理你的状况

在我的这个例子里用的是 Scoped Model ,用法很简朴:注册一个model, 再注入组件就能够访问了。

细致代码参考: main.dart

逻辑不庞杂, 看看就晓得怎样做了。

怎样打包

我们当地开辟完了, 愿望能在手机上装一个来游玩, 该怎样做呢, 也不难。

鄙人用的是iPhone, 就以这个举例了

起首, 翻开你的Xcode,找到你的项目,点击general :

《Flutter 初体验》

《Flutter 初体验》

涌现以下页面:

《Flutter 初体验》

点击 Add Account, 这一步的目标是天生证书

假如没有上岸, 须要你用本身的Apple ID 上岸。

另有一点要注意:

《Flutter 初体验》

这里要把把com.example.xxx改一下, example改成别的字符串, 目标是天生唯一表识。

《Flutter 初体验》

末了确认下有没有挑选你的装备:

《Flutter 初体验》

确认好以后, 点击 Try again.

然后就胜利天生了:

![图片上传中…]

末了再从新run 一下:

《Flutter 初体验》

在终端也从新run一下: flutter run -d all

然后就在手机上装置胜利了:

《Flutter 初体验》

别忘了给这个app 设置信托
至此应当都OK了, 假如另有报错, 能够在 Xcode 的提醒里看。

功德圆满! XD

是否是很简朴, 小伙伴们赶忙上车玩玩把。

末了

这个demo 是用日常平凡写营业代码以外的时候做的, 许多处所还比较大略, 不过题目不大, 就是练手罢了, 放佛翻开了另一扇大门, 有许多有意思的东西能够做。

也许就这么多, 愿望对人人有所协助,背面还会延续更新, 喜好的朋侪能够关注下。

行文急急, 不免涌现马虎, 迎接斧正, 感谢。

    原文作者:皮小蛋
    原文地址: https://segmentfault.com/a/1190000018399317
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞