|
|
@@ -500,13 +500,11 @@ class _CalculatorPageState extends State<CalculatorPage> {
|
|
|
],
|
|
|
// 3 变量
|
|
|
[
|
|
|
- _Key('x', _Act.char, payload: 'x'),
|
|
|
- _Key('a', _Act.char, payload: 'a'),
|
|
|
- // y 比 b 要紧:二元方程组、圆的方程、对称变换全都要 y,
|
|
|
- // 而 b 在函数面板之外也没什么独占用途
|
|
|
- _Key('y', _Act.char, payload: 'y'),
|
|
|
- _Key('t', _Act.char, payload: 't'),
|
|
|
- _Key('n', _Act.char, payload: 'n'),
|
|
|
+ _Key('x', _Act.char, payload: 'x', mathVar: true),
|
|
|
+ _Key('y', _Act.char, payload: 'y', mathVar: true),
|
|
|
+ _Key('a', _Act.char, payload: 'a', mathVar: true),
|
|
|
+ _Key('t', _Act.char, payload: 't', mathVar: true),
|
|
|
+ _Key('n', _Act.char, payload: 'n', mathVar: true),
|
|
|
],
|
|
|
// 4 运算符:解方程、赋值、代入、定义函数全靠它们。
|
|
|
// 都是"运算符"不是"函数",所以放键盘上而不是函数面板里。
|
|
|
@@ -609,8 +607,11 @@ class _CalculatorPageState extends State<CalculatorPage> {
|
|
|
k.label,
|
|
|
style: TextStyle(
|
|
|
color: fg,
|
|
|
- fontSize: k.label.length > 2 ? 13 : 17,
|
|
|
- fontFamily: k.label.length > 2 ? null : 'monospace',
|
|
|
+ fontSize: k.label.length > 2 ? 13 : (k.mathVar ? 20 : 17),
|
|
|
+ fontFamily: k.mathVar
|
|
|
+ ? 'serif'
|
|
|
+ : (k.label.length > 2 ? null : 'monospace'),
|
|
|
+ fontStyle: k.mathVar ? FontStyle.italic : FontStyle.normal,
|
|
|
),
|
|
|
),
|
|
|
),
|
|
|
@@ -651,6 +652,10 @@ class _Key {
|
|
|
/// 编辑框里显示的名字(和真正送出去的 payload 不同时用)。
|
|
|
final String? display;
|
|
|
|
|
|
+ /// 是不是"数学变量"。变量键的标签用**斜体衬线**,和运算符区分开 ——
|
|
|
+ /// 等宽字体里 `x`(变量)和 `×`(乘号)几乎一模一样,用户实测反馈过。
|
|
|
+ final bool mathVar;
|
|
|
+
|
|
|
final bool tint;
|
|
|
final bool primary;
|
|
|
|
|
|
@@ -661,6 +666,7 @@ class _Key {
|
|
|
this.prefill = const [],
|
|
|
this.mergeDigit = false,
|
|
|
this.display,
|
|
|
+ this.mathVar = false,
|
|
|
this.tint = false,
|
|
|
this.primary = false,
|
|
|
});
|