我想在復選框被選中時改變文本的顏色,但我被卡住了。我有一個名為getTextColor的函式,它應該根據文本定義應使用的顏色。
在這種情況下,當復選框被選中時,它應該檢查文本中是否有 "A",如果有,則應用藍色。如何實作這一目標?
以下是我試圖建立它的方法:
class _MainScreenState extends State< MainScreen> {
bool? dominant_A = false;
Color getTextColor(String text) {
var TheRightColor = Colors.black;
if (text == 'AABB'/span> || text == 'AaBb'/span>) {
TheRightColor = Colors.blueAccent;
}
return TheRightColor。
}
//這里是復選框的結構。
void _onDominant_A(bool? newValue) => setState(( ) {
dominant_A = newValue;
if (dominant_A ? ? true) {
//這里應該是對'AABB'和'AaBb'(都有一個'A')應用藍色的邏輯。
}
});
下面是它以后的呼叫方式:
TextSpan(
text: widget.result ' ',
風格。TextStyle(
字體大小。20.0,
fontWeight: FontWeight.bold,
color: object.getTextColor(widget.result), //結果就是文本。
高度。2.5。
LetterSpacing: 0.7。
)),
補充資訊:我不確定這個函式getTextColor是否需要存在。我只是把它放在那里,因為我不知道以后如何像第二段代碼那樣呼叫它。
uj5u.com熱心網友回復:
與其設定一個變數來存盤正確的顏色,不如嘗試在getTextColor()中評估正確的顏色,并將其回傳到文本的樣式屬性中。這樣,當你每次setState((){})
下面是一個相同的實作。看看它是否有幫助。
class _MyHomePageState extends State< MyHomePage> {
bool isChecked = false;
@override
Widget build(BuildContext context) {
String text = "AABB"/span>;
Color getTextColor(String textToBeAssesed) {
if (isChecked) {
//Logic to be checked if checkbox is clicked[/span]。
if (text == 'AABB'/span> || text == 'AaBb'/span>) {
return Colors.blueAccent;
} else {
return Colors.black;
}
} else {
//Logic to be checked if checkbox is unticked {else
return Colors.black;
}
}
return Scaffold(
appBar: AppBar(
標題。Text(widget.title),
),
body: 中心(
孩子。列(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Checkbox(
value: isChecked,
onChanged: (值) {
setState(() {
isChecked = !isChecked;
});
},
),
文本(
文本。
style: TextStyle(color: getTextColor(text))。
),
],
),
),
);
}
}
uj5u.com熱心網友回復:
我沒有測驗過,但我相信你可以使用setState來實作這個功能:
class _MainScreenState extends State< MainScreen> {
bool? dominant_A = false;
顏色 textSpanColor = Color(0xFFEFEF); //your textpan default color here
checkText(String text){
if (dominant_A) {
setState(() { textSpanColor = getColor(); })。
}
}
顏色 getColor() {
顏色 color = Colors.black;
if (text == 'AABB'/span> || text == 'AaBb'/span>) {
color = Colors.blueAccent;
}
return color。
你的textpan:
TextSpan(
text: widget.result ' ',
風格。TextStyle(
字體大小。20.0,
fontWeight: FontWeight.bold,
color: textSpanColor,
高度。2.5,
字母間距。0.7。
),
),
在這里你將使用onChanged來傳遞一個復選框被選中時的顏色:
Checkbox(
...
value: dominant_A,
onChanged: (bool?值) {
setState(() {
dominant_A = value!
});
checkText(widget.result)。
},
...
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/313094.html
標籤:
