我嘗試在小部件中使用函式,但收到此錯誤錯誤:無法將引數型別“函式”分配給引數型別“void Function()?”。
我在這里搜索并看到有人建議使用我在代碼中設定的相同方法,所以有什么問題?
import 'package:flutter/material.dart';
class ReusableCard extends StatelessWidget {
ReusableCard(
{required this.colour, required this.cardChild, required this.onPress});
final Color colour;
final Widget cardChild;
final Function onPress;
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: onPress,
child: Container(
child: cardChild,
margin: EdgeInsets.all(15.0),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10.0),
color: colour,
),
),
);
}
}
uj5u.com熱心網友回復:
更改final Function onPress;為final Function() onPress;
uj5u.com熱心網友回復:
替換onTap: onPress為onTap: () => onPress()
uj5u.com熱心網友回復:
在 Flutter 中,我們已經有了沒有引數且不回傳資料的回呼的簽名 - VoidCallback。
你可以使用它:
final VoidCallback onPress;
此外,我們還有ValueSetter<T>, ValueGetter<T>, 和其他人。
基金會圖書館
uj5u.com熱心網友回復:
默認情況下,Function型別是一個沒有引數的動態型別值回傳函式。
通常,Flutter 期望其按鈕內有 void 回呼,這意味著它期望一個void Function型別,沒有引數。
解決此問題的一種常見、靈活且易讀的方法是使用 void 函式包裝您的函式,例如:
() => myFunction()
即使您的函式非常不同(例如它有一些引數),這也會起作用,從而使您的代碼更加靈活。
() => myFunctionThatAcceptsAnInteger(5)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/357535.html
上一篇:「offer來了」從基礎到進階原理,從vue2到vue3,48個知識點保姆級帶你鞏固vuejs知識體系
下一篇:如何將不可見布局設定為永久可見?
