質問
現在、Flutterを勉強中なのですが、1つのウィジェットを他のウィジェットでも使用していた場合の
引数がどうしたらいいのか分からず質問させていただきます。
遷移先のテキストフィールドで値を受け取り、遷移元で値を表示するというものを作成したいです。
遷移元のウィジェットをAclassとし、遷移先のウィジェットをBclassとした時に、
MyAppのhomeにAclassを設定しています。
MyAppクラスのhomeにAclassのウィジェットを設定していると引数が設定されていないというエラーが出てしまいます。
ボトムナビゲーションバーを利用していた時にも同様のエラーが出ていて、調べても解決に至りませんでした。
Bclassで値を渡し、Aclassでのみ値を受け取りたいのですが、ボトムナビゲーションバーを使用していたクラスで
Aclassを設定していると、そこにも引数がないというエラーになっていました。
前回の質問でNullを指定する方法を教えていただきましたが、値を画面上に表示させない場合は有効でしたが、その値を画面に表示させたい場合は、そのままNULLが出てしまい解決できませんでした。
どなたかアドバイス頂けると助かります。
発生している問題・エラーメッセージ
class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'Flutter Demo', theme: ThemeData( primarySwatch: Colors.blue, ), home: Aclass(), ⇦ここでエラーが発生する ); } } class Aclass extends StatefulWidget{ Aclass(this.txtf); String txtf; @override _Aclass createState() => _Aclass(); } class _Aclass extends State<Aclass>{ @override Widget build(BuildContext context){ return Scaffold( appBar: AppBar( title: Text('Bclass'), actions: [ IconButton(icon: Icon(Icons.add_box), onPressed: (){ Navigator.of(context).push( MaterialPageRoute( builder: (context) => Bclass(), ), ); } ) ], ), ); } } class Bclass extends StatefulWidget{ @override _Bclass createState() => _Bclass(); } class _Bclass extends State<Bclass>{ String textf = ''; @override Widget build(BuildContext context){ return Scaffold( appBar: AppBar( title: Text('addPage'), ), body: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ TextFormField( onChanged: (text){ textf = text; }, ), OutlinedButton( child: Text('送信'), onPressed: (){ Navigator.of(context).pop(); }, ) ], ), ); } }

0 コメント