如何在页面转换后显示SnackBar

时间:2017-09-08 03:14:02

标签: flutter

我想在显示页面时只显示一次SnackBar。 但是我们不能在构建方法中调用showSnackBar。

是否有一个在构建后调用的处理程序?

3 个答案:

答案 0 :(得分:2)

您可以使用StatefulWidget并在showSnackBar的{​​{1}}中致电initState。在触发State之前,您需要添加一个短暂的延迟。这是一个代码示例。

showSnackBar

答案 1 :(得分:1)

使用StatelessWidget和scheduleMicrotask也可以实现

import 'dart:async';
import 'package:flutter/material.dart';

class App extends StatelessWidget {
  final GlobalKey<ScaffoldState> _scaffoldKey = new GlobalKey<ScaffoldState>();
  App() {
    scheduleMicrotask(() => _scaffoldKey.currentState.showSnackBar(SnackBar(
          content: Text('Hey!'),
        )));
  }
  @override
  Widget build(BuildContext ctx) {
    return Scaffold(
        key: _scaffoldKey,
        appBar: AppBar(
          title: Text('Look mum!'),
        ),
        body: Container());
  }
}

答案 2 :(得分:0)

您还可以尝试附加到addPostFrameCallback(https://api.flutter.dev/flutter/scheduler/SchedulerBinding/addPostFrameCallback.html

SchedulerBinding.instance.addPostFrameCallback((_) {
    //show snackbar here
  });