flutter/widget

Snackbar 케이스 정리

coens 2022. 5. 15. 15:14

1. ScaffoldMessenger 이용

ScaffoldMessenger.of(context).showSnackBar(SnackBar(
  content: Text("스낵바!")
));

 

2. Global Key & scaffoldMessengerKey 이용

최상위 위젯 MaterialApp단위에서 scaffoldMessenger에 global Key를 사용하여 Snackbar 사용

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

final rootScaffoldKey = GlobalKey<ScaffoldMessengerState>();

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      scaffoldMessengerKey: rootScaffoldKey,
      home: MyKey(),
    );
  }
}

class MyKey extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      floatingActionButton: FloatingActionButton(
        onPressed: () {
          rootScaffoldKey.currentState?.showSnackBar(SnackBar(
            content: Text('snack'),
          ));
        },
        child: Icon(Icons.add),
      ),
    );
  }
}

//1. 최상위 스캐폴드키에 생성(ScaffoldMessengerState)
  final rootScaffoldKey = GlobalKey<ScaffoldMessengerState>();

//2. MaterialApp의 생성자로 scaffoldMessengerKey 삽입
  MaterialApp(
  scaffoldMessengerKey: rootScaffoldKey,
  ....
  );

//3. 버튼에서 사용
  onPressed: () {
    rootScaffoldKey.currentState?.showSnackBar(SnackBar(
    content: Text('snack'),
    ));
  },

 

'flutter > widget' 카테고리의 다른 글

아이콘 만들어 주는 사이트  (0) 2023.09.08
TextFormField  (0) 2022.05.19
FutureBuilder  (0) 2022.05.14