ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • BuildContext / Snack Bar 자세히는 모름...
    프로그래밍 공부 메모/flutter 2022. 5. 27. 23:16

    스넥바는 가벼운 메시지를 띄우는 기능이다

    이 스넥바가 그려지는 위치가 ' of 메소드 ' 통해 scaffold 위젯에서 그려져야 하는데 에러가 난다...

    ' of 메소드 '의 역할은 해당 가까운 ' context ' (여기에선 scaffold 클래스)가 있는 클래스를 찾가라는 것이다

    하지만 결과는 scaffold클래스를 찾이 못하고 부모 클래스인 mypage를 찾아가보고 그래도 없으면 그 위로 계속 찾아가지만 에러가 발생한다

     

    해결 방법으로 BuilderContext 위젯을 생성하여 찾아가자~

    Scaffold 위젯 밑에 BuilderContext 위젯을 위치 시켜 Scaffold.of 메소드가 그 위에는 바로 Scaffold가 있다는 것을 찾을 수 있게 해준다

     

    예제 코드)

    import 'package:flutter/material.dart';
    
    void main() {
      runApp(const MyApp());
    }
    
    class MyApp extends StatelessWidget {
      const MyApp({Key? key}) : super(key: key);
    
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          title: 'Flutter Demo',
          theme: ThemeData(
            primarySwatch: Colors.blue,
          ),
          home: const MyPage(),
        );
      }
    }
    
    class MyPage extends StatelessWidget {
      const MyPage({Key? key}) : super(key: key);
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: Text('snack bar'),
            centerTitle: true,
          ),
          body: Builder(builder: (context) {
            return Center(
              child: FlatButton(
                color: Colors.red,
                onPressed: () {
                  Scaffold.of(context).showSnackBar(
                    SnackBar(
                      content: Text('hello'),
                    ),
                  );
                },
                child: Text(
                  'show me',
                  style: TextStyle(
                    color: Colors.white,
                  ),
                ),
              ),
            );
          }),
        );
      }
    }

     

    반응형
Designed by Tistory.