我想在显示页面时只显示一次SnackBar。 但是我们不能在构建方法中调用showSnackBar。
是否有一个在构建后调用的处理程序?
答案 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
});