当页面显示时,我只想显示一次SnackBar。但是我们不能在build方法中调用showSnackBar。
构建后是否有调用的处理程序?
你可以使用StatefulWidget和调用showSnackBar在initState你的State。您需要在触发之前添加一小段延迟showSnackBar。这是一个代码示例。
StatefulWidget
showSnackBar
initState
State
import 'dart:async'; import 'package:flutter/material.dart'; void main() { runApp(new MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return new MaterialApp( home: new HomePage(), ); } } class HomePage extends StatelessWidget { @override Widget build(BuildContext context) { return new Scaffold( floatingActionButton: new FloatingActionButton( child: new Icon(Icons.developer_board), onPressed: () { Navigator.of(context).push( new MaterialPageRoute(builder: (_) => new MySecondPage()), ); }, ), ); } } class MySecondPage extends StatelessWidget { @override Widget build(BuildContext context) { return new Scaffold( appBar: new AppBar( title: new Text('Developer Mode'), ), body: new MySecondPageBody(), ); } } class MySecondPageBody extends StatefulWidget { @override State createState() => new MySecondPageBodyState(); } class MySecondPageBodyState extends State<MySecondPageBody> { @override void initState() { new Future<Null>.delayed(Duration.ZERO, () { Scaffold.of(context).showSnackBar( new SnackBar(content: new Text("You made it! Congrats.")), ); }); super.initState(); } @override Widget build(BuildContext context) { return new Center( child: new Text('You are now a developer.'), ); } }