How to create Toast in Flutter?

前端 未结 28 769
小蘑菇
小蘑菇 2020-12-12 10:46

Can I create something similar to Toasts in Flutter? Just a tiny notification window that is not directly in the face of the user and does not lock or fade the view behind i

28条回答
  •  -上瘾入骨i
    2020-12-12 11:08

    You can access the parent ScaffoldState using Scaffold.of(context)

    Then do something like

    Scaffold.of(context).showSnackBar(SnackBar(
          content: Text("Sending Message"),
        ));
    

    Snackbars are the official "Toast" from material design. See https://material.io/design/components/snackbars.html#usage

    Here is a fully working example:

    import 'package:flutter/material.dart';
    
    void main() {
      runApp(MyApp());
    }
    
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          home: const Home(),
        );
      }
    }
    
    class Home extends StatelessWidget {
      const Home({
        Key key,
      }) : super(key: key);
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: const Text('Snack bar'),
          ),
    
          /// We use [Builder] here to use a [context] that is a descendant of [Scaffold]
          /// or else [Scaffold.of] will return null
          body: Builder(
            builder: (context) => Center(
                  child: RaisedButton(
                    child: const Text('Show toast'),
                    onPressed: () => _showToast(context),
                  ),
                ),
          ),
        );
      }
    
      void _showToast(BuildContext context) {
        final scaffold = Scaffold.of(context);
        scaffold.showSnackBar(
          SnackBar(
            content: const Text('Added to favorite'),
            action: SnackBarAction(
                label: 'UNDO', onPressed: scaffold.hideCurrentSnackBar),
          ),
        );
      }
    }
    

提交回复
热议问题