ここでFlutterのもう1つの初心者。これは2分の仕事になると本当に思っていましたが、実際にはここでスタックを取得します。「こんにちは」データを渡す必要があります
モーダルウィジェットから
class ToolModal extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Column(
children: <Widget>[
Text('tools'),
FlatButton(
child: Text('save'),
onPressed: () => Navigator.pop(context, 'Hello'),
),
],
);
}
}
バーウィジェットを介して
class Bar extends StatelessWidget {
@override
Widget build(BuildContext context) {
return BarItem(
name: 'Option1',
icon: Icons.category,
onPressed: () {
showModalBottomSheet(
isScrollControlled: true,
context: context,
builder: (context) => ToolModal(),
);
},
);
}
}
ホーム画面へ
class Home extends StatefulWidget {
@override
_HomeState createState() => _HomeState();
}
class _HomeState extends State<Home> {
@override
Widget build(BuildContext context) {
return Bar();
}
}
私は画面から画面にデータを渡す方法を知っています(私は知っていると思いました)が、モーダルとウィジェットの間で本当に私を失望させました。誰かがこれを手伝ってくれませんか?この質問について本当にお詫びしますが、これに対する答えが見つかりません
あなたは近くにいます。showModalBottomSheet
を返しますFuture
。結果の「Hello」は、次の方法でキャプチャできます。
class Bar extends StatelessWidget {
@override
Widget build(BuildContext context) {
return BarItem(
name: 'Option1',
icon: Icons.category,
onPressed: () async {
String hello = await showModalBottomSheet(
isScrollControlled: true,
context: context,
builder: (context) => ToolModal(),
);
},
);
}
}
コールバック関数を使用して、データをホーム画面に戻すことができます。
class Bar extends StatelessWidget {
final Function(String) onHello;
const Bar({Key key, this.onHello}): super(key: key);
@override
Widget build(BuildContext context) {
return BarItem(
name: 'Option1',
icon: Icons.category,
onPressed: () async {
String hello = await showModalBottomSheet(
isScrollControlled: true,
context: context,
builder: (context) => ToolModal(),
);
onHello(hello);
},
);
}
}
class Home extends StatefulWidget {
@override
_HomeState createState() => _HomeState();
}
class _HomeState extends State<Home> {
@override
Widget build(BuildContext context) {
return Bar(onHello: (String hello) {
print(hello);
});
}
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加