-
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, ), ), ), ); }), ); } }
반응형'프로그래밍 공부 메모 > flutter' 카테고리의 다른 글
Navigator.pushNamed() 다중 화면 전환 (0) 2022.05.29 Navigator 다루기 push(), pop() 화면 전환 (0) 2022.05.29 class 다루기 #9 Generic (0) 2022.05.19 Map 다루기 (entry, asMap) (0) 2022.05.17 List 다루기 Looping / Mapping / Reduce / Fold (0) 2022.05.17