set Named Route
[Ko]
- named route 설정시 ‘/‘ format을 사용할 때는 반드시 / 뒤에 다른 단어가 없는 ‘/‘가 있어야 함.
- MaterialApp에 named route를 설정할 때 screen id를 대상 screen의 id property를 만들어서 사용.
(오타 방지 기능) —> 이때는 main route에서 object를 반복적으로 또는 불필요하게 만들지 않고도 class의 property 또는 function에만 직접 접근 할 수 있도록 static property로 만들자. static property는 class가 직접 소유하는 property.
- 변수 앞에 static을 붙이면 class 단계에서 해당 변수에 메모리가 설정되며 초기화됨. static keyword는 class wide variable을 만들어 줌.
- class 내부에 const variable을 만들 때는 해당 class의 object가 생성된 뒤에도 변치 않을 변수라는 의미이기 때문에 반드시 static const를 변수명 앞에 붙여 주어야 함.
- object 생성 없이 클래스내 함수를 직접 불러와서 사용하려면 함수명 앞에도 static을 붙일 수 있음.
- 또한 변수의 값이 고정값인 경우 변수명 앞에 static 대신 static const를 붙여서 변수가 예기치않게 수정되는 것을 막을 수 있음.
- final code
return MaterialApp(
theme: ThemeData.dark().copyWith(
textTheme: TextTheme(
body1: TextStyle(color: Colors.black54),
),
),
initialRoute: WelcomeScreen.id,
routes: {
WelcomeScreen.id: (context) => WelcomeScreen(),
...
},
);
}
}
class WelcomeScreen extends StatefulWidget {
static const String id = 'welcome_screen';
@override
_WelcomeScreenState createState() => _WelcomeScreenState();
}
class _WelcomeScreenState extends State<WelcomeScreen> {
@override
Widget build(BuildContext context) {
...
[En]
- When using the '/' format when setting a named route, there must be a '/' without any other words after /.
- When setting a named route in MaterialApp, use the screen id by creating the id property of the target screen.
(Error prevention function) —> In this case, let's make static property to directly access only the property or function of class without making the object repeatedly or unnecessary in the main route. The static property is a property directly owned by the class.
- If static is added in front of the variable, the memory is set and initialized in the class step. Static keyword creates class wide variable.
- When creating a const variable inside a class, it means that it is a variable that will not change even after the object of the class is created.
- If you want to directly call and use a function in the class without creating an object, static can be added before the function name.
- Also, if the value of the variable is a fixed value, static const can be added to the variable name instead of static to prevent the variable from being modified unexpectedly.
- final code
return MaterialApp(
theme: ThemeData.dark().copyWith(
textTheme: TextTheme(
body1: TextStyle(color: Colors.black54),
),
),
initialRoute: WelcomeScreen.id,
routes: {
WelcomeScreen.id: (context) => WelcomeScreen(),
...
},
);
}
}
class WelcomeScreen extends StatefulWidget {
static const String id = 'welcome_screen';
@override
_WelcomeScreenState createState() => _WelcomeScreenState();
}
class _WelcomeScreenState extends State<WelcomeScreen> {
@override
Widget build(BuildContext context) {
...
'플러터(Flutter) > 플러터 일반(Flutter General)' 카테고리의 다른 글
[Dart] Mixins (0) | 2020.03.19 |
---|---|
Hero Animation (0) | 2020.03.19 |
Passing Data to a State Object (0) | 2020.03.19 |
JSON Parsing and Dynamic Types (0) | 2020.03.19 |
Lifecycle method of Stateful widget (0) | 2020.03.19 |