網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
正文
在開發(fā) Flutter 時(shí),常常需要?jiǎng)?chuàng)建新的頁(yè)面或新的 Widget,每次都重新手寫總是很麻煩,這篇文章介紹一些減少手寫樣板代碼的方式。
筆者使用的是 Android Studio,所以這里的技巧都是在 AS 中使用的。
快捷輸入
Android Studio 的 Flutter 插件提供了一些在代碼編輯區(qū)域的快捷輸入,根據(jù)這些輸入可以快速生成模板代碼。最常用的快捷輸入是 stless
和 stful
。
stless
表示生成一個(gè) Stateless 的 Widget。
// | 表示多行光標(biāo),可以輸入類名 class | extends StatelessWidget { const |({Key? key}) : super(key: key); @override Widget build(BuildContext context) { return Container(); } }
stful
表示生成一個(gè) Stateful 的 Widget。
// | 表示多行光標(biāo),可以輸入類名 class | extends StatefulWidget { const |({Key? key}) : super(key: key); @override _|State createState() => _State(); } class _|State extends State<> { @override Widget build(BuildContext context) { return Container(); } }
一個(gè)小缺點(diǎn):不能自動(dòng)生成 import,需要額外手動(dòng) import material 庫(kù)。
AS 文件模板
Android Studio 提供了強(qiáng)大的代碼和文件模板功能,我們可以使用它來創(chuàng)建 Flutter 的模板。
如何創(chuàng)建模板
在文件目錄處,右鍵選擇 New,選擇 Edit File Templates...,會(huì)出現(xiàn)一個(gè)編輯模板的彈窗。
在彈窗中,點(diǎn)擊下圖紅框中的 + 號(hào),就可以創(chuàng)建一個(gè)文件模板了,只需要將模板代碼輸入到右側(cè)的編輯區(qū)域即可。
代碼模板示例
StatelessWidget 模板
#set( $nameparts = $NAME.split("_")) #set( $namepart = '') #set( $classname = '') #foreach( $namepart in $nameparts ) #set( $classname = $classname + $namepart.substring(0, 1).toUpperCase() + $namepart.substring(1)) #end import 'package:flutter/material.dart'; class $classname extends StatelessWidget { // TODO: add state variables, methods and constructor params $classname(); @override Widget build(BuildContext context) { // TODO: add widget build method return null; } }
StatefulWidget 模板
#set( $nameparts = $NAME.split("_")) #set( $namepart = '') #set( $classname = '') #foreach( $namepart in $nameparts ) #set( $classname = $classname + $namepart.substring(0, 1).toUpperCase() + $namepart.substring(1)) #end import 'package:flutter/material.dart'; class $classname extends StatefulWidget { @override _${classname}State createState() => new _${classname}State(); } class _${classname}State extends State<$classname> { // TODO: add state variables and methods @override Widget build(BuildContext context) { // TODO: add widget build method return null; } }
這里最值得注意的是 import 語(yǔ)句前的的一段代碼,它是把小寫下劃線格式的 dart 文件名,轉(zhuǎn)換成大駝峰格式的 dart 類名。比如 hello_world_widget.dart
就會(huì)變成 HelloWorldWidget
。
這樣就可以模仿著寫一個(gè)自己的模板了,比如筆者針對(duì) Stateless 的 Scaffold 的頁(yè)面制作了一個(gè)模板:
#set( $nameparts = $NAME.split("_")) #set( $namepart = '') #set( $classname = '') #foreach( $namepart in $nameparts ) #set( $classname = $classname + $namepart.substring(0, 1).toUpperCase() + $namepart.substring(1)) #end import 'package:flutter/material.dart'; class $classname extends StatelessWidget { const $classname({Key? key}) : super(key: key); @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text("$classname"), ), body: Container(), ); } }
如何使用模板
在文件目錄處,右鍵選擇 New,選擇自己創(chuàng)建的模板(如下圖),就會(huì)彈出一個(gè)彈窗,輸入 dart 文件名即可生成模板代碼文件。
參考文檔
How to make templates in Android Studio
原文鏈接:https://juejin.cn/post/7152714489895321614
相關(guān)推薦
- 2022-03-26 android獲取及監(jiān)聽手機(jī)網(wǎng)絡(luò)狀態(tài)_Android
- 2022-11-02 react父組件更改props子組件無(wú)法刷新原因及解決方法_React
- 2022-01-17 類組件與函數(shù)組件的區(qū)別 react中class創(chuàng)建的組件與function創(chuàng)建的組件有什么區(qū)別
- 2022-03-16 C++?explicit關(guān)鍵字講解_C 語(yǔ)言
- 2022-09-18 Go語(yǔ)言單控制器和多控制器使用詳解_Golang
- 2022-09-24 C語(yǔ)言利用面試真題理解指針的使用_C 語(yǔ)言
- 2022-09-15 圖文詳解在Anaconda安裝Pytorch的詳細(xì)步驟_python
- 2022-06-02 Swift中類與結(jié)構(gòu)的初始化示例解析_Swift
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支