直下のコードを無名関数を使用しない形で書き換えてみました。二番目のコードです。無名関数を通常の関数を使って置き換えた形にしただけなのでコードの動作としては変わらないと思っていたのですが、context
とindex
は定義されていないというエラーが出ます。二つのコードは似て非なるものなのでしょうか?(無名関数の名前空間がキーポイントだとは思うのですが自分では解決できませんでした。)
Dart
1 Widget itemBuilder(BuildContext context, int index) { 2 return GestureDetector( 3 onTap: () => showDialog( 4 context: context, 5 builder: (context) => _dialogBuilder(context, _menus[index])), 6 child: Container(), 7 ); 8 }
Dart
1 Widget itemBuilder(BuildContext context, int index) { 2 return GestureDetector( 3 onTap: onTapFunc, 4 child: Container(), 5 ); 6 } 7 8 onTapFunc(){ 9 showDialog( 10 context: context, 11 builder: (context) => _dialogBuilder(context, _menus[index])); 12 }
また、onTapには引数を取らない関数しか渡せないので、無名関数を使わずに普通に関数を定義してしまうと、contextとindexを渡せず詰むことになるのでしょうか?
もう一点疑問があります。onTapは戻り値がvoidの関数を受け取るのですがshowDialog関数はFuture型のオブジェクト返すようですがなぜコンパイルエラーが発生しないのでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。