728x90

Platform 관련 함수는 웹에서 사용이 불가능한 모양

 

 

사용하지 않거나,

그럼에도 불구하고 사용하고싶으면 try-catch 감싸라는 이야기 존재

 

 

//You can use a try-catch block to prevent the exception from breaking the flow:

bool kisweb;
try{
    if(Platform.isAndroid||Platform.isIOS) {
        kisweb=false;
    } else {
        kisweb=true;
    }
} catch(e){
    kisweb=true;
}



 

Reference

https://stackoverflow.com/questions/58459483/unsupported-operation-platform-operatingsystem

 

Unsupported operation: Platform._operatingSystem

My flutter code isn't running on web. I found that "bool kisweb" can be used to detect the platform. But my code is failing at "FirebaseAuth.instance". Does this mean I can't use Firebaseauth on ...

stackoverflow.com

 

728x90

'Dev > Flutter' 카테고리의 다른 글

[Flutter/Dart] .. (Double dot/이중점) 연산자 - cascade  (0) 2021.01.15
[Flutter] 플러터로 Web하기  (0) 2020.09.07
728x90

 

Flutter의 Dart에서 함수 호출시 ".." 을 사용하는 경우가 있다.

이는 동일한 객체에 대해 여러 메소드를 호출하려할 때 간략하게 쓰는 것임.

즉, 동일한 타겟을 반복하지 않아도 되도록 하는 것

ex)
list.add(color1);
list.add(color2);
list.add(color3);
list.add(color4);

// with cascade

List list = [];
list
  ..add(color1)
  ..add(color2)
  ..add(color3)
  ..add(color4);
//It's the cascade operator of Dart

var l1 = new List<int>()..add(0)..addAll([1, 2, 3]);

//results in l1 being a list [0, 1, 2, 3]

var l1 = new List<int>().add(0).addAll([1, 2, 3]);

 

 

results in an error, because .add(0) returns void

.. (in the former example) refers to new List(), while . (in the later) refers to the return value of the previous part of the expression.

.. was introduced to avoid the need to return this in all kinds of methods like add() to be able to use an API in a fluent way.

.. provides this out of the box for all classes.

 

 

Reference

stackoverflow.com/questions/49447736/list-use-of-double-dot-in-dart

 

List use of double dot (.) in dart?

Sometimes I see this List list = []; Then list..add(color) Whats the difference in using 1 dot(.) and 2 dot(..)?

stackoverflow.com

 

728x90

'Dev > Flutter' 카테고리의 다른 글

[Flutter/web] Platform 함수 에러 관련  (0) 2021.01.15
[Flutter] 플러터로 Web하기  (0) 2020.09.07
728x90

Coroutine 사용방법

  1. Dispatcher(=작업 종류) 결정
  2. ispatcher로 CoroutineScope 생성
  3. 3. CoroutineScope의 launch/async에 실행할 코드 블록을 넘김

 

CoroutineScope

- 코루틴의 실행 범위, 코루틴 블록을 제어할 수 있는 단위

 

  1. GlobalScope
    • CoroutineScope의 한 종류. 최초 접근시 만들어짐.
    • 앱이 동작하는 동안 별도의 생명 주기를 관리하지 않고 사용할 수 있음.
    • 이는 안드로이드 앱이 처음 시작부터 종료 할때까지 하나의 CoroutineContext 안에서 동작하도록 할 수 있음.
    • 다만, Job을 컨트롤하기에 접합하지 않음에 주의 해야함
  2. Lifecycle-Aware Coroutine Scopes: 
    • Android Lifecycle용(KTX 종속)
      1.  ViewModelScope
        • androidx.lifecycle ViewModelKt .class public val ViewModel.viewModelScope: CoroutineScope CoroutineScope tied to this ViewModel. This scope will be canceled when ViewModel will be cleared, i.e ViewModel.onCleared is called This scope is bound to Dispatchers.Main.immediate
        • ViewModelScope는 앱의 각 ViewModel을 대상으로 정의됩니다. 이 범위에서 시작된 모든 코루틴은 ViewModel이 삭제되면 자동으로 취소됩니다. 코루틴은 ViewModel이 활성 상태인 경우에만 실행해야 할 작업이 있을 때 유용합니다. 예를 들어 레이아웃의 일부 데이터를 계산한다면 작업의 범위를 ViewModel로 지정하여 ViewModel을 삭제하면 리소스를 소모하지 않도록 작업이 자동으로 취소됩니다.
      2. LifecycleScope
        • LifecycleScope는 각 Lifecycle 객체에서 정의됩니다. 이 범위에서 시작된 코루틴은 Lifecycle이 끝날 때 취소됩니다. lifecycle.coroutineScope 또는 lifecycleOwner.lifecycleScope 속성을 통해 Lifecycle의 CoroutineScope에 액세스할 수 있습니다.

 

Reference

thdev.tech/kotlin/2019/04/05/Init-Coroutines/

developer.android.com/topic/libraries/architecture/coroutines#lifecyclescope

zion830.tistory.com/56

 

728x90
728x90

Kotlin의 Delegates 사용

 

  1. Observable
    • 갱신 거부 불가능, 데이터를 넣어주는대로 갱신함
  2. vetoable
    • 갱신 거부 가능
    • boolean을 반환: true-데이터 갱신/false-데이터 비갱신

 

 

Reference

medium.com/androiddevelopers/built-in-delegates-4811947e781f

medium.com/@yeongpal/kotlin-%EC%9D%98-delegate%EA%B8%B0%EB%8A%A5-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0-b358211a756

 

728x90

+ Recent posts