Android Studio生成 Flutter 模板代碼技巧詳解
正文
在開發(fā) Flutter 時,常常需要創(chuàng)建新的頁面或新的 Widget,每次都重新手寫總是很麻煩,這篇文章介紹一些減少手寫樣板代碼的方式。
筆者使用的是 Android Studio,所以這里的技巧都是在 AS 中使用的。
快捷輸入
Android Studio 的 Flutter 插件提供了一些在代碼編輯區(qū)域的快捷輸入,根據(jù)這些輸入可以快速生成模板代碼。最常用的快捷輸入是 stless 和 stful。

stless 表示生成一個 Stateless 的 Widget。
// | 表示多行光標(biāo),可以輸入類名
class | extends StatelessWidget {
const |({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Container();
}
}
stful 表示生成一個 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();
}
}
一個小缺點:不能自動生成 import,需要額外手動 import material 庫。
AS 文件模板
Android Studio 提供了強大的代碼和文件模板功能,我們可以使用它來創(chuàng)建 Flutter 的模板。
如何創(chuàng)建模板
在文件目錄處,右鍵選擇 New,選擇 Edit File Templates...,會出現(xiàn)一個編輯模板的彈窗。

在彈窗中,點擊下圖紅框中的 + 號,就可以創(chuàng)建一個文件模板了,只需要將模板代碼輸入到右側(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 語句前的的一段代碼,它是把小寫下劃線格式的 dart 文件名,轉(zhuǎn)換成大駝峰格式的 dart 類名。比如 hello_world_widget.dart 就會變成 HelloWorldWidget。
這樣就可以模仿著寫一個自己的模板了,比如筆者針對 Stateless 的 Scaffold 的頁面制作了一個模板:
#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)建的模板(如下圖),就會彈出一個彈窗,輸入 dart 文件名即可生成模板代碼文件。

參考文檔
How to make templates in Android Studio
以上就是Android Studio生成 Flutter 模板代碼技巧詳解的詳細內(nèi)容,更多關(guān)于Android Studio生成Flutter模板的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
淺析Android中g(shù)etWidth()和getMeasuredWidth()的區(qū)別
這篇文章主要介紹了淺析Android中g(shù)etWidth()和getMeasuredWidth()的區(qū)別 ,getMeasuredWidth()獲取的是view原始的大小,getWidth()獲取的是這個view最終顯示的大小,具體區(qū)別介紹大家參考下本文2018-04-04
Android 勇闖高階性能優(yōu)化之啟動優(yōu)化篇
在移動端程序中,用戶希望的是應(yīng)用能夠快速打開。啟動時間過長的應(yīng)用不能滿足這個期望,并且可能會令用戶失望。輕則鄙視你,重則直接卸載你的應(yīng)用2021-10-10
Android編程實現(xiàn)捕獲程序異常退出時的錯誤log信息功能詳解
這篇文章主要介紹了Android編程實現(xiàn)捕獲程序異常退出時的錯誤log信息功能,結(jié)合實例形式分析了Android異常信息捕獲與日志操作相關(guān)實現(xiàn)技巧,需要的朋友可以參考下2017-08-08

