我創建了一個基本上是 ElevatedButton 的 Widget,除了它的寬度可以與螢屏大小成比例(可使用 WidthFactor 設定)。
import 'package:flutter/material.dart';
class FractionalButton extends StatelessWidget {
final double widthFactor;
final Widget child;
final Function onPressed;
FractionalButton({
required this.widthFactor,
required this.onPressed,
required this.child,
});
@override
Widget build(BuildContext context) {
return FractionallySizedBox(
widthFactor: widthFactor,
child: ElevatedButton(
onPressed: onPressed(),
child: child,
),
);
}
}
麻煩的是,它顯示灰色而不是使用綠色的基本主題顏色。

ElevatedButton(
onPressed: () {},
child: const Text("Country"),
),
FractionalButton(
widthFactor: 1,
onPressed: () {},
child: const Text("Password"),
),
如何讓我的小部件使用當前的主題顏色?
uj5u.com熱心網友回復:
這不是 ElevatedButton 的問題,而是onPressed您傳遞給自定義 ElevatedButton 的函式。
代替
final Function onPressed;
利用
final VoidCallback onPressed;
或者
final Function() onPressed;
并像下面這樣使用它:
onPressed: onPressed,
您的FractionalButton將如下所示。
class FractionalButton extends StatelessWidget {
final double widthFactor;
final Widget child;
final VoidCallback onPressed;
FractionalButton({
required this.widthFactor,
required this.onPressed,
required this.child,
});
@override
Widget build(BuildContext context) {
return FractionallySizedBox(
widthFactor: widthFactor,
child: ElevatedButton(
onPressed: onPressed,
child: child,
),
);
}
}
編輯
它發生的原因是您沒有onPressed正確傳遞給自定義 ElevatedButton 并且它被設定為禁用模式。
uj5u.com熱心網友回復:
問題在于函式的宣告試試這個:
final void Function() onPressed;
整個代碼:
class FractionalButton extends StatelessWidget {
final double widthFactor;
final Widget child;
final void Function() onPressed;
FractionalButton({
required this.widthFactor,
required this.onPressed,
required this.child,
});
@override
Widget build(BuildContext context) {
return FractionallySizedBox(
widthFactor: widthFactor,
child: ElevatedButton(
onPressed: onPressed,
child: child,
),
);
}
}
所以當你使用這個小部件時:
ElevatedButton(
onPressed: () {},
child: const Text("Country"),
),
FractionalButton(
widthFactor: 0.5,
onPressed: () { },
child: const Text("Password"),
),
這將是結果:

如您所見,它使用與原始 ElevatedButton 相同的主題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/425232.html
