Flutterの学習をしています。
親Widgetで実行する関数をコールバック関数として渡し、子Widgetの方で実行させる練習をしています。
スクリーンには値を入力するTextField
とTextButtonのカスタムWidgetCustomTextButton
があります。
TextField
の値をprintするコールバック関数をCustomTextButton
に渡して、onPressedで実行したいのですが実行されませんでした。
import 'package:flutter/material.dart'; class Test extends StatelessWidget { @override Widget build(BuildContext context) { String? inputtedText; return MaterialApp( home: Scaffold( appBar: AppBar( title: const Text('test'), ), body: Column( children: [ TextField( onChanged: (value) { inputtedText = value; }, ), const SizedBox( height: 20, ), /// テキストフィールドの値を出力するコールバックを渡す。 CustomTextButton(callBack: () { print(inputtedText ?? 'empty'); }) ], ), ), ); } } class CustomTextButton extends StatelessWidget { const CustomTextButton({Key? key, required this.callBack}) : super(key: key); final Function callBack; @override Widget build(BuildContext context) { return TextButton( /// プレス時に実行されない。 onPressed: () { callBack; }, child: Container( color: Colors.lightBlueAccent, padding: const EdgeInsets.all(10.0), child: const Text( 'print', style: TextStyle(color: Colors.white), )), ); } }
デバックしたところ、CustomTextButton
のプロパティcallBack
の返り値がnullになっていました。
これは返り値を持たない関数が渡されたのでnullになったという解釈なのか、うまく渡されていないのかどちらなのかがわかりませんでした。
エラー発生してないため何が原因なのかがわかりません。
ご助力願います。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/07/19 01:59 編集
2021/07/19 09:22