본문 바로가기

Languages/Dart & Flutter

dart 버튼아니고 스트림을 이용한 스낵바 호출

검색해보면 스낵바의 호출은 대부분 버튼은 onpress하면 발생한다.

내가 원하는건 버튼을 누르면이 아니라 어떠한 행동을 했을 때 발생했으면 했었다.

 

스낵바는 scaffold가 있어야 된다.

근데 또 scaffold의 context면 안된다. 그래서 한 번 더 감싼다던지 위젯을 만든다던지

다이렉트로는 안되더라.

자세한건 참고링크를 확인. 

 

그래서 난 key를 이용했다.

사용법은 걸어 둔 링크를 참고하면 되겠다. 정리를 잘하셨다.

 

 final scaffoldKey = GlobalKey<ScaffoldState>();
 
 키를 만들고
 
 Scafold 위젯에
 key:scaffoldKey 해주면 된다

그리고 listen이 있는 class에 스낵바를 호출하는 함수를 적어주면 된다.

subscription = streamDirection.listen((event) {
      view.scaffoldKey.currentState.showSnackBar(SnackBar(
          content:
              Text(text.toString().substring(1, text.toString().length - 1))));
    });