Flutter Get - The Strange Behavior of Get.create (feat. GetView)

preview_player
Показать описание
Get Manual에 보면 GetWidget에 대해 아래와 같이 언급되어 있습니다.

----------
Most people have no idea about this Widget, or totally confuse the usage of it. The use case is very rare, but very specific: It caches a Controller. Because of the cache, can't be a const Stateless.

So, when do you need to "cache" a Controller?

That's where GetWidget shines... as you can use it, for example, to keep a list of Todo items. So, if the widget gets "rebuilt", it will keep the same controller instance.
----------

제 생각에는 이게 꽤 쓰임새가 많기 때문에 빨리 해결이 되어야 할텐데, 어려운 문제인지, 아니면 제가 뭘 제대로 사용하지 못한 건진 모르겠는데요, 하여간 원하는 결과가 나오지 않았습니다.

- Doesn’t keep the controller state
- Initializes all items if a new item is added to the list

- Keep the controller state
- Keep the existing items’ state even if a new item is added to the list

- Doesn’t keep the controller state
- Initializes all items if a new item is added to the list

추후 이 부분이 깔끔하게 해결이 되면 영상에 Deprecated 마크를 붙이겠습니다.

관련 영상들

관련 링크
Рекомендации по теме
Комментарии
Автор

영상 잘 봤습니다. 기대감에 차서 GetX document를 읽고 적용해보려던 참이었는데 믿고 써도 되나하는 불안감이 살짝 들기도 하네요.
말씀하신 이슈는 저도 subscribe 해두겠습니다.
해당 이슈가 궁금하던 참에 때마침 영상으로 올려주시니 덕분에 저는 미래의 시간을 아낀셈이네요. 감사합니다.

swafkorea
Автор

오늘은 한가지 궁금한점이 있어서 여쭙고자 왔습니다..!
뉴모피즘 디자인에 눈이 가게되어 사용해보려 했는데
GetX는 MaterialApp 위젯을 변경하여 사용하는거라
사용하기가 힘들어보이더군요, ㅜㅜ
깃이슈를 보면 제작자가 뉴모피즘에 대해서는 만들 계획이 없다고 단언도 했구..

이런 다양성?에서 떨어진다고 보이는 점도 GetX의 단점이라고 볼 수 있을까요?

myo_hada
Автор

좋은 강좌 감사합니다. 요즘은 1, 2번째는 정상 동작합니다. 업데이트 되어서 그런 것 같습니다. 현재 테스트 버전은 4.6.5 입니다. 참고하세요.

그런데. 이렇게 수정해서 쓰는게. Getx 사용취지에 맞는건지는 의문입니다. 감안하시고 3번째 코드관련 내용 참고하세요. 3번째는 코드를 조금 수정하면 잘 동작합니다. get 4.6.5, flutter 2.10 입니다.
1. static get to => Get.find(); 삭제, (개인 생각으론 get.create 로 injection 해서 static 으로 하면 controller 를 못 찾는것 같아요)
2. cart_stateless_page.dart 파일에 = Get.find();" 추가하고(아래 샘플 참고) 접근하는 대신에 이렇게 접근합니다. 그리고 StatefulWidget 로 변경하라고 경고나와서 변경했습니다.

class CartItem extends StatefulWidget {
final String product;
const CartItem({Key? key, required this.product}) : super(key: key);

@override
State<CartItem> createState() => _CartItemState();
}

class _CartItemState extends State<CartItem> {
late // 이거 추가

@override
void initState() {
// TODO: implement initState
= Get.find(); // 이거 추가.
super.initState();
}

@override
Widget build(BuildContext context) {

개인적인 추측으로는 1, 2번째인 GetWidget, GetBuilder 는 타입을 지정해줘서 정상동작하고, 3번째는 수정하면 잘되는거 같습니다.

14번째 강의에서 1번째 구조에 대한 업데이트 영상이 있었네요. ^^

mikebskim
welcome to shbcf.ru