【发布时间】:2020-09-12 22:18:08
【问题描述】:
我需要通过单击另一个小部件中的图标来更改 textField 的 fontSize。所以我在这里有我的自定义文本字段小部件。
class StateTextField extends StatefulWidget {
final FocusNode focusNode = FocusNode();
final Function(bool,Widget) callback;
final String fontFamily = FontFamily.Arial.toString().split('.')[1];
double fontSize = 18;
final Function(bool) selected;
final bool highlighted = false;
bool hasFocus() {
return focusNode.hasFocus;
}
increaseFontSize() {
fontSize += 2;
}
decreasefontSize() {
if (fontSize > 0) fontSize -= 2;
}
StateTextField({@required this.callback,@required this.selected});
@override
_StateTextFieldState createState() => _StateTextFieldState();
}
在第二个小部件中,我使用了函数 increaseFontSize 和 reductionFontSize 来改变大小
onTap: () {
setState(() {
print(widget.textField.fontSize);
widget.textField.increaseFontSize();
print(widget.textField.fontSize);
});
}
点击按钮后尺寸会增加,但不会反映出来。我意识到这是因为 setState 不会改变 textField 的状态。那我应该采用什么方法呢?
【问题讨论】:
-
你应该有一个全局状态并且可以使用任何状态管理技术来完成,我建议你看看provider包。
标签: android flutter flutter-layout