ASDEV logo

ASDEV

Asdev Solution Technology

IntermediateMobile

Panduan Clean Architecture dan BLoC State Management di Flutter

Struktur folder modular, pemisahan layer Data-Domain-Presentation, dan state management reactive di Flutter.

Mobile Engineering Team18 menit baca21 Oktober 20264 views
#Flutter#Dart#BLoC#Clean Architecture#Mobile

Arsitektur Aplikasi Skala Enterprise

Dalam membangun aplikasi Flutter berukuran besar, menumpuk logic di dalam widget adalah anti-pattern yang berbahaya. Clean Architecture membagi kode ke dalam tiga layer independen:

  1. Domain Layer: Berisi Entity dan Use Cases murni (tanpa dependensi framework Flutter).
  2. Data Layer: Berisi DataSource (Remote/Local API), Model JSON serializer, dan Implementasi Repository.
  3. Presentation Layer: Berisi BLoC (Events & States) dan Widget UI responsif.

Struktur Proyek

text
lib/
├── core/
│   ├── error/
│   ├── network/
│   └── theme/
└── features/
    └── authentication/
        ├── data/
        │   ├── datasources/
        │   ├── models/
        │   └── repositories/
        ├── domain/
        │   ├── entities/
        │   ├── repositories/
        │   └── usecases/
        └── presentation/
            ├── bloc/
            └── pages/

Mendefinisikan BLoC Event & State

Dengan pattern BLoC, perubahan UI sepenuhnya dipicu oleh State:

dart
// auth_event.dart
abstract class AuthEvent extends Equatable {
  const AuthEvent();
}

class LoginSubmitted extends AuthEvent {
  final String email;
  final String password;
  const LoginSubmitted({required this.email, required this.password});
  
  @override
  List<Object?> get props => [email, password];
}

// auth_state.dart
abstract class AuthState extends Equatable {
  const AuthState();
}

class AuthInitial extends AuthState {}
class AuthLoading extends AuthState {}
class AuthSuccess extends AuthState {
  final User user;
  const AuthSuccess(this.user);
}
class AuthFailure extends AuthState {
  final String message;
  const AuthFailure(this.message);
}

Kesimpulan

Dengan struktur ini, tim developer dapat bekerja secara paralel tanpa merge conflict pada layer UI dan Business Logic.

text

Siap mendalami topik lainnya?

Koleksi tutorial arsitektur, clean code, dan DevOps kami diperbarui secara berkala.

Kembali ke Katalog Tutorial