Flutter Widget 之package mason实现详解

作者:程序员界的小学生 时间:2021-07-08 23:43:08 

Flutter有个悠久的传统,便是运行flutter create并删除所有内容,然后在所有标准样板文件(boilerplate)当中尽力复制和粘贴,这很费时又容易出错,而且比报税更无趣,但是是否别无他法?

Flutter Widget 之package mason实现详解

进入Mason,这是用于欧快速组装新项目或功能的软件包,可以从成为“砖块”的自定义模版中生成代码,而这些模版根据你的项目的特定值呈现

Flutter Widget 之package mason实现详解

使用Mason砖块

例如想象一下,你正为Flutter新项目使用Mason砖块的pubspec.yaml文件,非常舒适。

有了砖块,看起来就像这样

name: {{ project_name.snakeCasse() }}
dependencies:
   flutter:
       sdk: flutter
   {{#uses_firebase}}
   firebase_core: ^X.Y.Z
   cloud_firestore: ^X.Y.Z
   {{/uses_firebase}}

如果你使用的是Firebase,这将生成包含Firebase依赖项的pubspec.yaml文件

name: socksCatalog
dependencies:
   flutter:
       sdk: flutter
   firebase_core: ^X.Y.Z
   cloud_firestore: ^X.Y.Z

如果你不是使用Firebase,那些依赖项将会被跳过

name: socksCatalog
dependencies:
   flutter:
       sdk: flutter

但是Mason如何知道你的项目名称或你是否使用Firebase?

进入mason_cli 这与flutter_create相似

运行mason make

但因用了Mason及自定义的砖块而更灵活。安装好后,用砖块的名字运行mason make

dart pub global activate mason_cli
mason add --global <BRICK_NAME>
mason make <BRICK_NAME>

Mason会读取砖块的manifest文件并问你一些问题

这里需要知道你的项目名称,以及你是否使用Firebase

Flutter Widget 之package mason实现详解

Mason_cli支持多种数据类型,包括字符串、布尔值、数字和枚举

如此的话,还有个问题,我们如何找到要使用的砖块名称?

为此,请浏览brickhub.dev并查看公开可用的砖块,世界各地的Flutter开发者已经上传它们自用的样板文件以帮你节省时间

Flutter Widget 之package mason实现详解

如果没有找到自己喜欢的,请将自己喜欢的Flutter项目结构转为砖块上传以为将来所需节省时间。

顺带一提,砖块大小可任意调整并非只能整个项目

/{{ feature_name}}
  {{ feature_name }}_screen.dart
  {{ feature_name }}_state_management.dart

你是否发现每次开始一个新功能时都会创建相同的启动文件?这种情况也很适合使用砖块

/login
   login_screen.dart
   login_state_management.dart

利用Mason,你可比以往更快地编写应用程序中有趣的部分

如果想了解有关package:mason,或者关于Flutter的其他功能,请访问pub.dev

来源:https://juejin.cn/post/7169828966235111438

标签:Flutter,Widget,package,mason
0
投稿

猜你喜欢

  • C#实现回文检测的方法

    2022-12-26 22:31:23
  • Spring Boot2.X国际化文件编写配置

    2023-02-24 11:34:24
  • C#中List〈string〉和string[]数组之间的相互转换

    2023-07-11 22:33:27
  • Idea打包springboot项目没有.original文件解决方案

    2022-07-12 20:06:08
  • Java实现聊天室界面

    2023-12-15 10:43:32
  • java二维数组实现推箱子小游戏

    2022-08-31 10:18:40
  • Java微信公众平台开发(14) 微信web开发者工具使用

    2023-01-30 19:21:34
  • Java如何跳过https的ssl证书验证详解

    2023-08-24 11:34:56
  • 一文搞懂并学会使用SpringBoot的Actuator运行状态监控组件的详细教程

    2022-01-31 10:28:23
  • C#开发WPF程序中的弱事件模式

    2022-11-21 12:50:34
  • Android手机获取root权限并实现关机重启功能的方法

    2022-02-19 13:56:49
  • 在Android设备上搭建Web服务器的方法

    2023-06-23 23:38:36
  • C#基础知识之this关键字介绍

    2022-02-08 10:59:16
  • MyBatis查询数据,赋值给List集合时,数据缺少的问题及解决

    2021-07-05 23:25:00
  • java 完全二叉树的构建与四种遍历方法示例

    2022-03-21 00:48:04
  • JavaEE微框架Spring Boot深入解读

    2021-07-31 14:24:55
  • Java8中Optional类的使用说明

    2023-07-25 13:31:32
  • Spring Boot mybatis-config 和 log4j 输出sql 日志的方式

    2021-05-31 22:13:20
  • C#正则表达式分解和转换IP地址实例(C#正则表达式大全 c#正则表达式语法)

    2023-07-17 07:11:25
  • 浅谈spring中scope作用域

    2022-08-18 10:42:53
  • asp之家 软件编程 m.aspxhome.com