首页 › 问答 › Linux › 正文 Flutter 中怎么用 Pug 和 Sass 结合 flutter-view? 2026-05-06 04:30:28 约 1 分钟读完 26 阅 文章导读 我们的文件结构类似于你在 React 或 Angular 中看到的那样,每个屏幕和组件都有自己的文件夹,包含我们的 Pug 和 Sass 文件。flutter-view 将根据这两个文件自动生成一个新的 Dart 文件。 📋 目录 壹 Pug/HTML 贰 Sass 叁 额外配置 肆 结束语 A A 博客文档招聘获取支持联系销售Pug/HTML 我们的文件结构类似于你在 React 或 Angular 中看到的那样,每个屏幕和组件都有自己的文件夹,包含我们的 Pug 和 Sass 文件。flutter-view 将根据这两个文件自动生成一个新的 Dart 文件。 * lib 📂 * screens 📂 * loader 📂 * loader.pug * loader.sass * main.dart 一旦我们导入了 flutter-view 包,就可以开始使用 Pug 语法创建 Flutter widgets。只需添加一个标签并传递 (flutter-view),就可以创建一个新的 stateless widget。 现在所有 widgets 都是小写字母,单词之间用连字符分隔,所以 appBar 变成 app-bar。创建一个新 class 将生成一个空的 container,我们可以在 Sass 文件中引用它。我们还可以使用 as 属性控制它在父 widget 中的标签名称。 home.pug home(flutter-view) scaffold app-bar(as='appBar') .siteName(as='title') Welcome 保存后,应该会生成一个新的 home.dart 文件,如果我们看一眼里面,会发现一些很酷的东西。 import 'package:flutter/material.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter_view_widgets/flutter_view_widgets.dart'; Scaffold Home() { return Scaffold( // project://lib\home\home.pug#4,2 appBar: AppBar( // project://lib\home\home.pug#5,3 title: //-- 标题 ---------------------------------------------------------- Container( // project://lib\home\home.pug#6,4 child: Text( 'Alligator.io', ), ), ), ); } flutter-view 甚至会为所有内容添加注释,便于你在调试时找到问题。 如果编译器无缘无故开始抱怨缩进问题,请重启你的编辑器,它有时就是这样。 我们需要为 widget 声明的任何属性都可以作为普通参数传递,遵循与 widgets 相同的命名格式。如果你需要使用函数,可以在前面加 @ 将其包装在括号中,或者用 :^ 原样输出,这最适合箭头函数。 home.pug import(package='flutter_view_widgets/flutter_view_widgets.dart') loader(flutter-view) scaffold app-bar(as='appBar' center-title=true).bar .siteName(as='title') Alligator.io .bg(as='body') column: array(as='children') .logo .slogan Front-End Web Development, Chewed Up .subSlogan Angular 2+, Vue.js, React, Svelte JavaScript, CSS, Node.js... .btnText: button(:^on-pressed="() => print('Hello World')") See all posts Sass 遗憾的是,这不是你所知的 CSS,仅是其语法。我们没有 CSS Grid,没有 Flexbox,甚至没有 rem 或百分比。我们仅限于每个特定 widget 已有的属性。 我们可以直接选择我们的 containers,或者使用它们的 classes/ids。 global.sass $solorized-light: #073642 $solorized-dark: #002b36 app-bar background-color: $solorized-light .bg background-color: $solorized-dark width: 500 对于某些属性,有些修改会影响生成的内容,因此现在 background-image 可以接受 url() 或 asset(),用于本地或外部资源。你可以在此处找到完整的修改属性列表。 home.sass @import '../global.sass' .logo background-image: url("https://aws1.discourse-cdn.com/netlify/original/2X/3/3c2117abab23d3cb409b49f75ca0ef8f46bb005c.png") height: 300 width: 300 .slogan color: #fff font-size: 30 text-align: center .subSlogan @extend .slogan margin-top: 15 font-size: 15 width: 300 .btnText margin-top: 40 font-size: 25 width: 200 height: 50 border-radius: 40 button color: $solorized-light text-color: white 一旦你习惯了这个过程,创建这样的内容将轻松只需标准 Dart 的一半时间。 额外配置 flutter-view 为我们提供了对生成文件的相当大的控制权。您只需在项目根目录放置一个 flutter-view.json 文件即可。 在这里,我们只是告诉它默认将 flutter-view 包添加到生成文件中,并且我们将 button 从 RaisedButton 重新映射到 FlatButton。 flutter-view.json { "imports": [ "package:flutter_view_widgets/flutter_view_widgets.dart" ], "tagClasses": { "button": "FlatButton" } } 结束语 仅用几行代码,我们就能轻松生成 2-3 倍的 Dart 代码,而无需担心任何一个括号或类型错误。此外,有一种清晰的方式来创建 mixins、循环和条件,使得开发变得更快、更愉快。 flutter-view 迅速成为我所有个人项目的首选工具,我也希望它能成为您的首选。 感谢与 Community 一起学习。请查看我们提供的计算、存储、网络和管理数据库服务。 了解更多我们的产品