Class에서 쓰기 좋은 키워드
1. Static 키워드
- 내가 정의하는 Class 그 자체에 데이터를 넣어줄 때 사용한다.
- 따라서, 해당 생성자로 여러 객체가 만들어져도 전부 똑같은 값을 가진다.
- static 다음에 const, final, var 중 하나를 입력해준다.
- 사용예시
- 페이지별 라우트를 넣고 관리해줄 때
Get.toNamed('/login');
class LoginPage extends StatelessWidget {
const LoginPage({super.key});
String route = '/login'
@override
Widget build(BuildContext context) {
return Scaffold();
}
}
- 사용 후
LoginPage.route
class LoginPage extends StatelessWidget {
const LoginPage({super.key});
static const String route = '/login'
@override
Widget build(BuildContext context) {
return Scaffold();
}
}
- 정적 데이터를 보관하고 싶을 때
- 페이지 라우트
class AppRoutes{
static const String login = LoginPage.Route;
static const String main = MainPage.Route;
static const String signup = SignUpPage.Route;
}
Get.toNamed(AppRoutes.LoginPage);
Get.toNamed(AppRoutes.MainPage);
Get.toNamed(AppRoutes.SignUpPage);
- 백엔드 api
class BackendApiRoutes{
static const String readPosts = '/api/v1/posts';
static const String readMemos = '/api/v1/memos';
}
- 그리고 그 외에
https://github.com/sergiandreplace/planets-flutter/blob/master/lib/Theme.dart
2. getter 키워드
- 멤버 변수랑 똑같은데.. 멤버변수처럼 추가로 정의하고 싶을 때 사용
- 멤버 변수를 따로 설정하지 않고도 원하는 데이터를 정의하고 싶을 때
class Student{
static const String SchoolName = '세은's school';
String studenId;
String name;
Student(this.name, this.studenId);
String get studentInfo => name + studenId;
int get nameLength => name.length;
}
var stu1 = Student('Teddy', '010-010');
print(stu1.studentInfo);
print(stu1.nameLength);
- GetxController에서 value를 쓰는게 불편했다면?
class AppController extends GetxController{
RxString myName = 'Teddy'.obs;
String get name => myName.value;
int get nameLength => myName.length;
}
3. setter 키워드
- 함수랑 똑같은데.. 멤버 변수에 새로운 값을 넣고 싶을 때 사용
- 멤버변수에 직접 접근하지 않고, 특별한 멤버변수명으로 값을 할당할 수 있는 능력을 만들고 싶을 때 사용
- 직접적으로 특정 데이터에 접근하는 것보다, 한번 중간에 middleware가 등장하는 걸로 해서 데이터가 들어오면 검수를하고, 변수를 설정할 수 있게 해준다.