Live template di Android Studio sangat berguna karena mereka menghemat waktu pengembangan dengan memungkinkan Anda menyisipkan potongan kode yang sering digunakan dengan cepat. Ini juga membantu memastikan konsistensi kode di seluruh proyek.
Cara Menambahkan Live Template ke Android Studio di macOS
- Buka Android Studio.
- Di menu bar, pilih
Android Studio > Preferences
. - Di jendela Preferences, pilih
Editor > Live Templates
. - Klik tombol
+
di bagian kanan untuk membuat grup template baru, berikan nama, misalnyaFlutter Templates
. - Pilih grup yang baru dibuat, lalu klik tombol
+
lagi dan pilihLive Template
. - Isi detail template:
- Abbreviation: Singkatan yang akan digunakan untuk memicu template, misalnya
json_model
. - Description: Deskripsi singkat tentang template, misalnya
Template for JSON model class
. - Template text: Masukkan kode template yang ingin Anda tambahkan.
- Abbreviation: Singkatan yang akan digunakan untuk memicu template, misalnya
- Klik
Define
dan pilih konteks di mana template akan tersedia, misalnyaDart
. - Klik
Apply
danOK
.
Cara Menambahkan Live Template ke Android Studio di Windows
- Buka Android Studio.
- Di menu bar, pilih
File > Settings
. - Di jendela Settings, pilih
Editor > Live Templates
. - Klik tombol
+
di bagian kanan untuk membuat grup template baru, berikan nama, misalnyaFlutter Templates
. - Pilih grup yang baru dibuat, lalu klik tombol
+
lagi dan pilihLive Template
. - Isi detail template:
- Abbreviation: Singkatan yang akan digunakan untuk memicu template, misalnya
json_model
. - Description: Deskripsi singkat tentang template, misalnya
Template for JSON model class
. - Template text: Masukkan kode template yang ingin Anda tambahkan.
- Abbreviation: Singkatan yang akan digunakan untuk memicu template, misalnya
- Klik
Define
dan pilih konteks di mana template akan tersedia, misalnyaDart
. - Klik
Apply
danOK
.
Daftar Live Template
json_bloc_road_map
import 'package:equatable/equatable.dart';
import 'package:json_annotation/json_annotation.dart';
part '$FileName$.g.dart';
@JsonSerializable()
class $NameClass$ extends Equatable{
@JsonKey(name: '$Id$')
final $TypeField$ $Id$;
$NameClass$(this.$Id$);
@override
List<Object?> get props => [
$Id$
];
factory $NameClass$.fromJson(Map<String, dynamic> json) =>
_$$$NameClass$FromJson(json);
Map<String, dynamic> toJson() => _$$$NameClass$ToJson(this);
}
json_field_bloc_road_map
@JsonKey(name: '$Key$')
final $TypeKey$ $Key$;
retrofit_bloc_road_map
import 'package:dio/dio.dart';
import 'package:retrofit/retrofit.dart';
part '$file_name$.g.dart';
@RestApi(baseUrl : "$BaseURL$")
abstract class $Class$Service {
factory $Class$Service(Dio dio, {String baseUrl}) = _$Class$Service;
@GET("$GET$")
Future<$CLASSRESPONSE$> $funtionResponse$();
}
- Retrofit live template
retrofit_client_bloc_road_map
import 'package:dio/dio.dart';
class $Class$Client {
late Dio _dio;
late $ClassService$ _service;
$Class$Client() {
_dio = Dio();
_dio.interceptors.add(LogInterceptor(requestBody: true, responseBody: true));
_service = $ClassService$(_dio);
}
$ClassService$ getService() {
return _service;
}
}
- Repository Live template
repository_bloc_road_map
abstract class $Class$Repository {
Future<$Response$>? $functionResponse$($Query$);
}
repository_impl_bloc_road_map
class $Class$Impl extends $ClassExtends$ {
late $ClassService$ _service;
$Class$Impl() {
_service = $ClassService$Client().getService();
}
}
state_bloc_default_road_map
import 'package:equatable/equatable.dart';
abstract class $Class$State extends Equatable {
const $Class$State();
@override
List<Object> get props => [];
}
class Initial$Class$State extends $Class$State {}
class Loading$Class$State extends $Class$State {}
class Error$Class$State extends $Class$State {
final String errorMessage;
const Error$Class$State({this.errorMessage = "Unknown Error"});
@override
String toString() =>
'Error : $errorMessage';
}
class Success$Class$State extends $Class$State {
const Success$Class$State();
}
event_bloc_default_road_map
import 'package:equatable/equatable.dart';
abstract class $Class$Event extends Equatable {
@override
List<Object> get props => [];
}
class $ClassEvent$Event extends $Class$Event {
$ClassEvent$Event();
}
bloc_default_road_map
import 'package:flutter_bloc/flutter_bloc.dart';
class $Class$Bloc
extends Bloc<$ClassEVENT$, $ClassState$> {
final $ClassRepository$ repository;
$Class$Bloc({required this.repository})
: super(Initial$Class$State());
@override
Stream<$ClassState$> mapEventToState($ClassEVENT$ event) async* {
if (event is $EventClass$) {
try {
yield Loading$Class$State();
$ClassResponse$ response = await repository.$method$;
yield Success$Class$State();
} catch (e) {
yield Error$Class$State(errorMessage: e.toString());
}
}
}
}
app_bloc_default_road_map
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
class $Class$ extends StatelessWidget {
const $Class$({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MultiBlocProvider(
providers: [
BlocProvider(
create: (context) => $ClassBloc$,
),
],
child: MaterialApp(
debugShowCheckedModeBanner: false,
title: 'Example',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: const Container(),
),
);
}
}
routes
class Routes {
Routes._();
static const String home = '/';
}