Flutter
Flutter Flow 이해하기
chengzior
2025. 4. 2. 16:42
Flutter Flow란?
코드 작성 없이 레이아웃 조정만으로 앱을 만들어주는 툴.
코드 없이 앱을 만들어 준다는 점에서 비용적으로나, 시간적으로나 절약할 수 있으나,
실제 코드로 앱을 만드는 것 만큼 자유도가 높지는 않다고 한다.
flutter flow 기초
- FFAppState : central hub for managing the application's global state
앱의 전역 상태를 관리하는 중간 허브같은 역할
- 앱의 생명주기 동안 이 클래스에서 하나의 인스턴스만 가진다
- ChangeNotifier를 상속받아 위젯의 상태 변경을 구독한다
- 앱을 초기화하고 지속적인 상태를 업데이트하는 메서드를 포함한다
- getter와 setter 처럼 값을 조정하는 상태 변수를 정의한다.
예시
class FFAppState extends ChangeNotifier {
static FFAppState _instance = FFAppState._internal();
factory FFAppState() {
return _instance;
}
FFAppState._internal();
static void reset() {
_instance = FFAppState._internal();
}
void update(VoidCallback callback) {
callback();
notifyListeners();
}
// App State variable of primitive type with a getter and setter
bool _enableDarkMode = false;
bool get enableDarkMode => _enableDarkMode;
set enableDarkMode(bool value) {
_enableDarkMode = value;
}
}
위 코드를 이해하려면 singleton 패턴을 알아야 할 필요가 있겠다
- Singleton : 오직 하나의 인스턴스만을 만드는 디자인 패턴
- 한 번 인스턴스가 생성되고 나면 생성된 인스턴스만을 반환하므로 고정된 메모리 영역을 차지한다.
- 인스턴스는 전역으로 사용할 수가 있어 공유하기 쉽다
- 단점으로는 자식 객체 가질 수 없음, 내부 구조 변경 불가 등이 있다.
- 앱 전체에서 동일한 인스턴스를 유지할 때 유용
class SingletonCount {
static final SingletonCount instance = SingletonCount._internal();
factory SingletonCount()=>instance;
SingletonCount._internal();
int count = 0;
}
코드 출처 및 개념 이해에 도움 된 글 : https://velog.io/@tygerhwang/Flutter-Singleton-Pattern싱글톤-패턴
class Singleton {
// 내부에서 사용할 정적 인스턴스
static final Singleton _instance = Singleton._internal();
// 외부에서 접근할 수 있는 factory 생성자
factory Singleton() {
return _instance;
}
// 프라이빗 생성자
Singleton._internal();
// 싱글톤 클래스의 메서드 및 변수
String data = "Hello, Singleton!";
void printData() {
print(data);
}
}
코드 출처 및 개념 이해에 도움 된 글 : https://benstagram.tistory.com/654
Rebuild
- 앱 상태 업데이트로 인한 현재 페이지 rebuild
상응하는 setter가 호출되고 즉시 set State()가 적용된다.
SchedulerBinding.instance.addPostFrameCallback((_) async {
FFAppState().enableDarkMode = !(FFAppState().enableDarkMode ?? true);
setState(() {});
});
- 모든 페이지 rebulild
setter가 호출되고 update 메서드를 따른다
SchedulerBinding.instance.addPostFrameCallback((_) async {
FFAppState().enableDarkMode = !(FFAppState().enableDarkMode ?? true);
FFAppState().update(() {});
});
FlutterFlow Model
FlutterFlow에서 사용되는 추상클래스로, 위젯의 상태와 behavior을 관리하기 위해 통일되고 통합된 구조를 제공한다.
초기화, 상태관리, 제거등의 로직을 압축하여 위젯과 모델의 생명주기를 쉽게 다룰 수 있도록 한다.