Mega CLI
CLI para criação e configuração inicial de projetos da Megaleios.
Instalação
Para instalar o mega_cli
basta digitar no terminal:
dart pub global activate mega
Uso
Antes de tudo, é necessário que o projeto esteja configurado no Firebase. Para isso, basta seguir o tutorial aqui e também o OneSignal. Agora para configurar o projeto basta digitar no terminal:
mega_cli init
A seguir irá aparecer a seguinte mensagem:
1) Yes
2) No
Add base permission to info.plist ? [1]
Esse comando irá adicionar as permissões(Camera, Arquivos) no arquivo info.plist
do projeto. Caso deseje adicionar essas permissões, basta digitar 1
e apertar enter. Caso não deseje adicionar, basta digitar 2
e apertar enter.
Logo após, irá aparecer a seguinte mensagem:
App name:
Digite o nome do seu app e aperte enter. Esse nome será inserido no Info.plist.
Logo após, irá aparecer a seguinte mensagem:
1) Yes
2) No
Add location permission in info.plist ? [1]
Esse comando irá adicionar a permissão de localização no arquivo info.plist
do projeto. Caso deseje adicionar essa permissão, basta digitar 1
e apertar enter. Caso não deseje adicionar, basta digitar 2
e apertar enter.
E por ultimo, irá aparecer a seguinte mensagem:
1) Yes
2) No
Use "Dependency_Overrides" on flutter_mega ? [1]
Esse comando irá adicionar as dependências do flutter_mega
como dependency_overrides
no arquivo pubspec.yaml
do projeto. Caso deseje adicionar essas dependências, basta digitar 1
e apertar enter. Caso deseje adicionar a dependência normalmente, basta digitar 2
e apertar enter.
Pronto! Seu projeto já está configurado para começar a desenvolver. 🪄
Explicando o que foi feito: Ios
- Adicionado as permissões de camera e arquivos no arquivo
info.plist
do projeto.
<key>NSCameraUsageDescription</key>
<string>Permita o acesso para que você possa tirar fotos para seu perfil no Mega Template.</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>Permita o acesso para que você possa escolher uma imagem para seu perfil no A a.</string>
// Caso tenha adicionado a permissão de localização
<key>NSLocationWhenInUseUsageDescription</key>
<string>Permita o acesso para que você possa usar a localização no Mega Template.</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>Permita o acesso para que você possa usar a localização no Mega Template.</string>
// Essa chave faz com que o APP é disponibilizado para todos os usuários automaticamente no teste interno da Apple
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
Android
- Adicionado o classpath do
google-services
no arquivobuild.gradle
do projeto para o uso do Firebase.
classpath 'com.google.gms:google-services:4.3.15'
- Adicionado o plugin do
google-services
no arquivoapp/build.gradle
do projeto para o uso do Firebase, e adicionado a versão docompileSdkVersion
eminSdkVersion
apply plugin: 'com.google.gms.google-services'
compileSdkVersion 34
minSdkVersion 22
Flutter
- Adicionado as dependências do
flutter_mega
no arquivopubspec.yaml
do projeto.
mega_commons_dependencies:
path: ../megaflutter_commons_dependencies
mega_commons:
path: ../megaflutter_commons
mega_features:
path: ../megaflutter_features
- Criado a pasta
assets
.- Criado o arquivo
app_colors.dart
no diretóriolib/app/core
.- Criado o arquivo
app_urls.dart
no diretóriolib/app/core
(Onde fica contido as urls do projeto).- Criado o arquivo
app_theme.dart
no diretóriolib/app/theme
.- Criação do arquivo
application_binding.dart
no diretóriolib/app
, onde fica a configuração da url base do projeto e a injeção doRestClientDio
, responsável por fazer as requisições http.- Criação da pasta
lib/app/data/models
onde fica os modelos do projeto.- Configuração do arquivo
analysis_options.yaml
para o uso dolint
, fique a vontade para configurar como desejar.- Configuração do
main.dart
para o uso doGetMaterialApp
e algumas configurações necessárias, como a inicialização doFirebase
,Hive
,OneSignal
eIntl.defaultLocale = 'pt_BR'
.
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
Intl.defaultLocale = 'pt_BR';
await Future.wait([
FirebaseConfig.initialize(),
BaseHive.initHive(),
MegaOneSignalConfig.configure(
appKey: '', //sua app key
),
]);
final token = AuthToken.fromCache();
final String initialRoute = token == null ? AppPages.initial : Routes.home;
initializeDateFormatting('pt_BR', null);
runApp(
GetMaterialApp(
title: 'Application',
initialRoute: initialRoute,
getPages: AppPages.routes,
initialBinding: ApplicationBinding(),
theme: AppTheme.theme,
),
);
}
- Removido a pasta
test
do projeto. 🧨 (Testes são importantes)- Configuração do GetX, criado os arquivos
app_pages.dart
eapp_routes.dart
no diretóriolib/app/routes
, onde fica as rotas do projeto.- Configuração inicial do
Hive
, criado o arquivobase_hive.dart
no diretóriolib/app/data/cache
, onde fica a configuração inicial doHive
.- Criação do module
Login
eHome
no diretóriolib/app/modules
, onde fica as páginas do projeto, por padrão é criado oController
,Binding
,View
eProvider
de cada módulo.
A estrutura do projeto ficará assim:
💡 Features Pré-configuradas
- Login
- Home
- Esqueci minha senha
- Alterar senha
- Notificações
Todas essas features já vem com a integração com a API do Mega Template, basta apenas configurar a url base do projeto no arquivo
app_urls.dart
e fazer o ajuste do layout conforme a necessidade do projeto 🚀
🖊️ Comandos extras
mega_cli feature <nome_da_feature>
Esse comando irá criar uma feature com o nome passado como parâmetro, já com o provider, controller, view e binding configurados.
Caso deseja cria sem o provider, basta passar o parâmetro --no-provider
no final do comando.
mega_cli feature <nome_da_feature> --no-provider
Libraries
- commands/commands
- commands/create_screen
- commands/feature_command
- commands/help_command
- commands/init_base_command
- extensions/string
- functions/core/base_conf
- functions/core/core
- functions/core/feature
- functions/core/help
- functions/core/screen
- functions/create/android_create
- functions/create/base_files_create
- functions/create/binding_create
- functions/create/controller_create
- functions/create/create
- functions/create/data_create
- functions/create/ios_create
- functions/create/mega_deps_create
- functions/create/provider_create
- functions/create/routes_create
- functions/create/view_create
- functions/folder/create_assets
- functions/functions
- mega_cli
- utils/formatter_dart_file
- utils/logger/log_utils
- utils/utils