0
ページが表示されている間だけSnackBarを1回表示します。 しかし、我々はビルド方法にshowSnackBarを呼び出すことはできません。ページ遷移後にSnackBarを表示する方法
ビルド後に呼び出されるハンドラはありますか?
ページが表示されている間だけSnackBarを1回表示します。 しかし、我々はビルド方法にshowSnackBarを呼び出すことはできません。ページ遷移後にSnackBarを表示する方法
ビルド後に呼び出されるハンドラはありますか?
State
のinitState
にはStatefulWidget
を、showSnackBar
に電話することができます。あなたはshowSnackBar
をトリガする前に短い遅延を追加する必要があります。ここにコードサンプルがあります。
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.'),
);
}
}
私の認識では、 'initState'は' build'の前に呼び出されます。 「足場」はまだ作られていない? – najeira
サンプルコードを提供するために私の答えを更新しました。 –