Flutter命令行工具插件get_cli的使用
Flutter命令行工具插件get_cli的使用
1. 安装get_cli
要安装get_cli
,请执行以下命令:
pub global activate get_cli
或者使用Flutter SDK中的Dart SDK:
flutter pub global activate get_cli
为了在命令行中使用get
命令,请将以下路径添加到系统的PATH环境变量中:
[FlutterSDKInstallDir]\bin\cache\dart-sdk\bin
2. 创建Flutter项目
使用get create project
命令可以在当前目录下创建一个新的Flutter项目。默认情况下,项目名称会取自当前文件夹的名称。你也可以指定项目名称:
get create project:my_project
如果项目名称包含空格,请使用引号包围名称:
get create project:"my cool project"
3. 初始化现有项目
使用get init
命令可以为现有的Flutter项目生成选定的结构。请注意,此命令会覆盖lib
文件夹中的所有文件,因此请谨慎使用。
get init
你可以选择两种结构之一:getx_pattern
或clean
。
4. 创建页面(Page)
页面(Page)包括控制器、视图和绑定文件,并且会自动添加路由。推荐使用getx_pattern
结构的用户使用此命令。
get create page:home
你还可以在另一个模块中创建页面:
get create page:name on other_module
5. 创建屏幕(Screen)
屏幕(Screen)与页面类似,但更适合使用clean
结构的用户。
get create screen:home
6. 创建控制器(Controller)
在特定文件夹中创建控制器:
get create controller:dialogcontroller on home
你还可以使用模板文件或URL创建控制器:
get create controller:auth with examples/authcontroller.dart on your_folder
或者从URL创建:
get create controller:auth with 'https://raw.githubusercontent.com/jonataslaw/get_cli/master/samples_file/controller.dart.example' on your_folder
输入模板代码:
@import
class @controller extends GetxController {
final email = ''.obs;
final password = ''.obs;
void login() {
}
}
输出生成的代码:
import 'package:get/get.dart';
class AuthController extends GetxController {
final email = ''.obs;
final password = ''.obs;
void login() {}
}
7. 创建视图(View)
在特定文件夹中创建视图:
get create view:dialogview on home
8. 创建提供者(Provider)
在特定文件夹中创建提供者:
get create provider:user on home
9. 生成本地化文件
在assets/locales
目录中生成语言文件。首先创建JSON格式的翻译文件,例如pt_BR.json
和en_US.json
:
{
"buttons": {
"login": "Entrar",
"sign_in": "Cadastrar-se",
"logout": "Sair",
"sign_in_fb": "Entrar com o Facebook",
"sign_in_google": "Entrar com o Google",
"sign_in_apple": "Entrar com a Apple"
}
}
{
"buttons": {
"login": "Login",
"sign_in": "Sign-in",
"logout": "Logout",
"sign_in_fb": "Sign-in with Facebook",
"sign_in_google": "Sign-in with Google",
"sign_in_apple": "Sign-in with Apple"
}
}
然后运行以下命令生成本地化类:
get generate locales assets/locales
生成的代码如下:
abstract class AppTranslation {
static Map<String, Map<String, String>> translations = {
'en_US': Locales.en_US,
'pt_BR': Locales.pt_BR,
};
}
abstract class LocaleKeys {
static const buttons_login = 'buttons_login';
static const buttons_sign_in = 'buttons_sign_in';
static const buttons_logout = 'buttons_logout';
static const buttons_sign_in_fb = 'buttons_sign_in_fb';
static const buttons_sign_in_google = 'buttons_sign_in_google';
static const buttons_sign_in_apple = 'buttons_sign_in_apple';
}
abstract class Locales {
static const en_US = {
'buttons_login': 'Login',
'buttons_sign_in': 'Sign-in',
'buttons_logout': 'Logout',
'buttons_sign_in_fb': 'Sign-in with Facebook',
'buttons_sign_in_google': 'Sign-in with Google',
'buttons_sign_in_apple': 'Sign-in with Apple',
};
static const pt_BR = {
'buttons_login': 'Entrar',
'buttons_sign_in': 'Cadastrar-se',
'buttons_logout': 'Sair',
'buttons_sign_in_fb': 'Entrar com o Facebook',
'buttons_sign_in_google': 'Entrar com o Google',
'buttons_sign_in_apple': 'Entrar com a Apple',
};
}
最后,在GetMaterialApp
中添加以下代码以启用多语言支持:
GetMaterialApp(
...
translationsKeys: AppTranslation.translations,
...
)
10. 生成模型类
在assets/models/user.json
中创建JSON模型文件:
{
"name": "",
"age": 0,
"friends": ["", ""]
}
然后运行以下命令生成模型类:
get generate model on home with assets/models/user.json
生成的代码如下:
class User {
String name;
int age;
List<String> friends;
User({this.name, this.age, this.friends});
User.fromJson(Map<String, dynamic> json) {
name = json['name'];
age = json['age'];
friends = json['friends'].cast<String>();
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['name'] = this.name;
data['age'] = this.age;
data['friends'] = this.friends;
return data;
}
}
如果你不想生成提供者类,可以添加--skipProvider
选项:
get generate model on home with assets/models/user.json --skipProvider
你还可以从URL生成模型类:
get generate model on home from "https://api.github.com/users/CpdnCristiano"
11. 管理依赖包
安装依赖包
安装单个依赖包:
get install camera
安装多个依赖包:
get install http path camera
安装指定版本的依赖包:
get install path:1.6.4
安装开发依赖包
安装开发依赖包:
get install flutter_launcher_icons --dev
移除依赖包
移除单个依赖包:
get remove http
移除多个依赖包:
get remove http path
12. 更新CLI
更新get_cli
:
get update
或者:
get upgrade
13. 查看CLI版本
查看当前get_cli
的版本:
get -v
或者:
get -version
14. 获取帮助
获取命令的帮助信息:
get help
15. 配置文件类型分隔符
你可以通过在pubspec.yaml
中添加以下配置来自定义文件名的分隔符:
get_cli:
separator: "."
16. 配置Getx目录布局
如果你希望创建页面或屏幕时生成扁平化的文件结构,可以在pubspec.yaml
中添加以下配置:
get_cli:
sub_folder: false
17. 组织导入语句
使用get sort
命令可以帮助你组织导入语句并格式化Dart文件。默认情况下,所有文件都会被重命名,如果你想跳过重命名,可以使用--skipRename
标志:
get sort --skipRename
如果你更喜欢使用相对导入而不是项目导入,可以使用--relative
选项:
get sort --relative
18. 国际化CLI
get_cli
现在支持国际化。要将CLI翻译成你的语言,请按照以下步骤操作:
- 在
translations
文件夹中创建一个包含你语言的新JSON文件。 - 复制
en.json
文件中的键,并翻译相应的值。 - 提交PR。
19. 未来计划
- 支持自定义模型
- 添加单元测试
- 改进生成的结构
- 添加备份系统
示例项目
以下是一个完整的示例项目,展示了如何使用get_cli
创建一个简单的Flutter应用:
-
创建项目:
get create project:my_app
-
初始化项目:
get init
-
创建主页:
get create page:home
-
创建登录页面:
get create page:login
-
创建用户模型:
在
assets/models/user.json
中创建JSON文件:{ "name": "", "age": 0, "friends": ["", ""] }
然后生成模型类:
get generate model on home with assets/models/user.json
-
添加依赖包:
安装
http
包:get install http
-
生成本地化文件:
在
assets/locales
中创建pt_BR.json
和en_US.json
文件,然后生成本地化类:get generate locales assets/locales
-
启动应用:
打开
main.dart
文件,确保在GetMaterialApp
中启用了多语言支持:import 'package:get/get.dart'; import 'package:my_app/translations/app_translation.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return GetMaterialApp( title: 'My App', translationsKeys: AppTranslation.translations, home: HomeView(), ); } }
更多关于Flutter命令行工具插件get_cli的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter命令行工具插件get_cli的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中使用get_cli
命令行工具的示例和相关代码案例。get_cli
是一个强大的命令行工具,通常与 get
包一起使用,可以简化 Flutter 项目的依赖管理、构建脚本等任务。
安装 get_cli
首先,你需要全局安装 get_cli
。你可以通过 Dart 的包管理工具 pub
来安装它:
dart pub global activate get_cli
安装完成后,你可以通过 get
命令来访问 get_cli
提供的功能。
初始化 Flutter 项目并使用 get_cli
-
创建一个新的 Flutter 项目(如果你还没有项目的话):
flutter create my_flutter_app cd my_flutter_app
-
将
get
包添加到你的pubspec.yaml
文件中:打开
pubspec.yaml
文件,并在dependencies
部分添加get
:dependencies: flutter: sdk: flutter get: ^4.0.0 # 请检查最新版本号
然后运行以下命令来安装依赖:
flutter pub get
-
使用
get_cli
初始化项目:运行以下命令使用
get_cli
初始化项目,这将自动为你生成一些必要的文件,比如controllers
、views
、models
等目录结构:get init
该命令会询问你一些配置选项,你可以根据需要选择。
使用 get_cli
管理依赖和脚本
get_cli
提供了许多有用的命令来管理 Flutter 项目,以下是一些常用命令及其示例:
-
添加依赖:
使用
get add
命令添加一个新的依赖项,例如添加一个provider
包:get add provider
该命令会自动更新你的
pubspec.yaml
文件和pubspec.lock
文件,并运行flutter pub get
。 -
运行 Flutter 项目:
你可以使用
get run
命令来运行你的 Flutter 项目,这与flutter run
命令类似:get run
-
生成项目模板:
get_cli
还可以帮助你生成常用的项目模板代码,例如一个新的页面控制器:get create page:Home
这将生成一个名为
HomeController
的控制器文件和一个名为home_view.dart
的视图文件,文件内容会包含一些基本模板代码。
示例代码结构
在使用 get init
后,你的项目结构可能会类似于以下结构:
my_flutter_app/
├── android/
├── ios/
├── lib/
│ ├── controllers/
│ │ └── example_controller.dart
│ ├── models/
│ ├── views/
│ │ └── home_view.dart
│ ├── main.dart
│ └── app_routes.dart # 自动生成的路由文件
├── pubspec.lock
├── pubspec.yaml
└── README.md
示例代码
以下是一个简单的 HomeController
和 home_view.dart
的示例代码:
HomeController.dart
import 'package:get/get.dart';
class HomeController extends GetxController {
var counter = 0.obs;
void increment() {
counter.value++;
}
}
home_view.dart
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import '../controllers/home_controller.dart';
class HomeView extends StatelessWidget {
final HomeController controller = Get.put(HomeController());
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Home'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'You have pushed the button this many times:',
),
Obx(() => Text(
'${controller.counter}',
style: Theme.of(context).textTheme.headline4,
)),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: controller.increment,
tooltip: 'Increment',
child: Icon(Icons.add),
),
);
}
}
app_routes.dart
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'views/home_view.dart';
class AppPages {
static final routes = [
GetPage(name: '/', page: () => HomeView()),
// 添加更多路由
];
}
main.dart
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'app_routes.dart';
void main() {
Get.lazyPut(() => HomeController());
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return GetMaterialApp(
title: 'Flutter Demo',
initialRoute: '/',
getPages: AppPages.routes,
);
}
}
通过上述步骤和代码,你可以轻松地在 Flutter 项目中使用 get_cli
命令行工具来管理和生成代码。