Study/Flutter

Flutter – Stateful vs Stateless Widgets

youngine 2021. 5. 18. 00:37
 

Flutter - Stateful vs Stateless Widgets - GeeksforGeeks

A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.

www.geeksforgeeks.org

 

앱의 상태는 앱이 실행되는 동안 앱의 메모리에 존재하는 모든 것으로 매우 간단하게 정의 할 수 있습니다. 여기에는 버튼, 텍스트 글꼴, 아이콘, 애니메이션 등을 포함하여 앱의 UI를 유지하는 모든 위젯이 포함

 

STATE

State는 위젯이 빌드 될 때 동 기적으로 읽을 수 있고 위젯의 수명 동안 변경 될 수있는 정보입니다.

즉, 위젯의 상태는 위젯이 화면에 그려 질 때 속성 (매개 변수)이 유지되고있는 개체의 데이터입니다. 상태는 사용할 때도 변경 될 수 있습니다. 예를 들어 CheckBox 위젯을 클릭하면 상자에 체크 표시가 나타납니다.

 

 

Stateless 위젯 : 빌드 된 후에 상태를 변경할 수없는 위젯을 Stateless 위젯 이라고합니다. 이러한 위젯은 일단 빌드되면 변경할 수 없습니다. 즉, 변수, 아이콘, 버튼의 변경 또는 데이터 검색으로 앱의 상태를 변경할 수 없습니다.

Stateless 위젯은 build () 메서드를 재정의하고 위젯을 반환합니다. 예를 들어, 우리는 Text 를 사용 하거나 Icon 은 위젯의 상태가 런타임 에서 변경되지 않는 flutter 애플리케이션 입니다. UI가 객체 자체의 정보에 의존 할 때 사용됩니다. 다른 예로는 Text , RaisedButton ,IconButtons .

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
	return Container();
}
}

이제이 작은 코드 조각이 우리에게 무엇을 알려주는지 살펴 보겠습니다. 상태 비 저장 위젯의 이름은 RunApp () 에서 호출되고 상태 비 저장 위젯을 확장하는 MyApp입니다 . 이 MyApp 내에서 빌드 함수가 재정의되고 BuildContext를 매개 변수로 사용합니다. 이 BuildContext는 위젯 트리 내에서 위젯을 찾는 데 사용되므로 각 위젯마다 고유합니다.

 

참고 : Flutter 애플리케이션의 위젯은 위젯 트리 형태로 표시됩니다. 여기에서 상위 및 하위 위젯을 연결하여 위젯 간의 관계를 표시 한 다음 결합하여 앱 상태를 형성합니다.

빌드 함수에는 앱의 UI를 디자인 할 내부에 Flutter의 위젯 인 컨테이너가 포함되어 있습니다. Stateless 위젯에서 빌드 함수는 화면의 UI를 만드는 한 번만 호출됩니다.

 

Stateful 위젯: 빌드 된 후 상태를 변경할 수있는 위젯을 상태 저장 위젯이라고합니다 .이러한 상태는 변경 가능하며 수명 동안 여러 번 변경할 수 있습니다.이는 단순히 앱의 상태가 다양한 변수, 입력, 데이터 세트로 여러 번 변경 될 수 있음을 의미합니다.

 

 Stateful 위젯은 createState ()를 재정의하고 State를 반환합니다 . UI가 동적으로 변경 될 수있을 때 사용됩니다. 몇 가지 예로는 CheckBox , RadioButton , Form , TextField가 있습니다.

"Stateful Widget"을 상속하는 클래스는 변경할 수 없습니다. 그러나 State는 사용자가 상호 작용할 때 런타임에서 변경되는 변경 가능합니다.

 

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
@override
Widget build(BuildContext context) {
	return Container();
}
}

Stateful 위젯의 이름은 RunApp () 에서 호출되고 Stateful 위젯을 확장하는 MyApp입니다 . MyApp 클래스에서 상태 생성 기능을 재정의합니다. 이 createState () 함수는 트리의 지정된 위치에서이 위젯의 ​​변경 가능한 상태를 만드는 데 사용됩니다. 이 메서드는 존경받는 상태 하위 클래스에 대한 인스턴스를 반환합니다. _MyAppState 인 다른 클래스는 위젯의 모든 변경 사항을 관리하는 상태를 확장합니다. 이 클래스 내에서 BuildContext를 매개 변수로 사용하는 빌드 함수가 재정의됩니다. 이 빌드 함수는 앱의 UI를 디자인하는 위젯을 반환합니다. 상태 저장 위젯이기 때문에 빌드 함수가 여러 번 호출되어 모든 변경 사항과 함께 전체 UI를 다시 한 번 생성합니다.

 

 

Stateless 위젯은 설명하는 사용자 인터페이스의 일부가 구성 정보와 BuildContext 외에 다른 것에 의존하지 않을 때 유용

Stateful 위젯은 설명하는 사용자 인터페이스의 일부가 동적으로 변경 될 수있는 경우에 유용