|
@@ -278,6 +278,10 @@ class _CalculatorPageState extends State<CalculatorPage> {
|
|
|
_doc.makeGroup();
|
|
_doc.makeGroup();
|
|
|
case _Act.power:
|
|
case _Act.power:
|
|
|
_doc.makePower();
|
|
_doc.makePower();
|
|
|
|
|
+ case _Act.brace:
|
|
|
|
|
+ _doc.makeBrace();
|
|
|
|
|
+ case _Act.newRow:
|
|
|
|
|
+ _doc.addMatrixRow();
|
|
|
case _Act.frac:
|
|
case _Act.frac:
|
|
|
_doc.makeFraction();
|
|
_doc.makeFraction();
|
|
|
case _Act.postfix:
|
|
case _Act.postfix:
|
|
@@ -477,8 +481,8 @@ class _CalculatorPageState extends State<CalculatorPage> {
|
|
|
return LayoutBuilder(
|
|
return LayoutBuilder(
|
|
|
builder: (context, box) {
|
|
builder: (context, box) {
|
|
|
final rows = <List<_Key>>[
|
|
final rows = <List<_Key>>[
|
|
|
|
|
+ // 1 大运算符
|
|
|
[
|
|
[
|
|
|
- // 不定积分:只给变量,不给上下限
|
|
|
|
|
_Key('∫', _Act.bigOp, payload: 'Integrate', prefill: ['x']),
|
|
_Key('∫', _Act.bigOp, payload: 'Integrate', prefill: ['x']),
|
|
|
_Key('Σ', _Act.bigOp,
|
|
_Key('Σ', _Act.bigOp,
|
|
|
payload: 'Sum', prefill: ['n', '1', 'Infinity']),
|
|
payload: 'Sum', prefill: ['n', '1', 'Infinity']),
|
|
@@ -486,6 +490,7 @@ class _CalculatorPageState extends State<CalculatorPage> {
|
|
|
_Key('lim', _Act.bigOp, payload: 'Limit', prefill: ['x', '0']),
|
|
_Key('lim', _Act.bigOp, payload: 'Limit', prefill: ['x', '0']),
|
|
|
_Key('solve', _Act.fnPrefixed, payload: 'Solve', prefill: ['', 'x']),
|
|
_Key('solve', _Act.fnPrefixed, payload: 'Solve', prefill: ['', 'x']),
|
|
|
],
|
|
],
|
|
|
|
|
+ // 2 常用函数
|
|
|
[
|
|
[
|
|
|
_Key('sin', _Act.fn, payload: 'Sin'),
|
|
_Key('sin', _Act.fn, payload: 'Sin'),
|
|
|
_Key('cos', _Act.fn, payload: 'Cos'),
|
|
_Key('cos', _Act.fn, payload: 'Cos'),
|
|
@@ -493,6 +498,15 @@ class _CalculatorPageState extends State<CalculatorPage> {
|
|
|
_Key('ln', _Act.fn, payload: 'Log'),
|
|
_Key('ln', _Act.fn, payload: 'Log'),
|
|
|
_Key('√', _Act.sqrt),
|
|
_Key('√', _Act.sqrt),
|
|
|
],
|
|
],
|
|
|
|
|
+ // 3 变量
|
|
|
|
|
+ [
|
|
|
|
|
+ _Key('x', _Act.char, payload: 'x'),
|
|
|
|
|
+ _Key('a', _Act.char, payload: 'a'),
|
|
|
|
|
+ _Key('b', _Act.char, payload: 'b'),
|
|
|
|
|
+ _Key('t', _Act.char, payload: 't'),
|
|
|
|
|
+ _Key('n', _Act.char, payload: 'n'),
|
|
|
|
|
+ ],
|
|
|
|
|
+ // 4 数字与括号
|
|
|
[
|
|
[
|
|
|
_Key('7', _Act.char, payload: '7', mergeDigit: true),
|
|
_Key('7', _Act.char, payload: '7', mergeDigit: true),
|
|
|
_Key('8', _Act.char, payload: '8', mergeDigit: true),
|
|
_Key('8', _Act.char, payload: '8', mergeDigit: true),
|
|
@@ -514,18 +528,18 @@ class _CalculatorPageState extends State<CalculatorPage> {
|
|
|
_Key('+', _Act.char, payload: '+'),
|
|
_Key('+', _Act.char, payload: '+'),
|
|
|
_Key('−', _Act.char, payload: '-'),
|
|
_Key('−', _Act.char, payload: '-'),
|
|
|
],
|
|
],
|
|
|
|
|
+ // 7 花括号:矩阵用
|
|
|
[
|
|
[
|
|
|
_Key('0', _Act.char, payload: '0', mergeDigit: true),
|
|
_Key('0', _Act.char, payload: '0', mergeDigit: true),
|
|
|
_Key('.', _Act.char, payload: '.', mergeDigit: true),
|
|
_Key('.', _Act.char, payload: '.', mergeDigit: true),
|
|
|
_Key('^', _Act.power),
|
|
_Key('^', _Act.power),
|
|
|
- _Key('x', _Act.char, payload: 'x'),
|
|
|
|
|
- _Key('n', _Act.char, payload: 'n'),
|
|
|
|
|
|
|
+ _Key('{', _Act.brace),
|
|
|
|
|
+ _Key('},{', _Act.newRow, tint: true),
|
|
|
],
|
|
],
|
|
|
[
|
|
[
|
|
|
_Key('⌫', _Act.back, tint: true),
|
|
_Key('⌫', _Act.back, tint: true),
|
|
|
_Key('CLR', _Act.clear, tint: true),
|
|
_Key('CLR', _Act.clear, tint: true),
|
|
|
_Key(',', _Act.comma),
|
|
_Key(',', _Act.comma),
|
|
|
- // 编辑框里显示 ANS,送进引擎的仍是 %
|
|
|
|
|
_Key('ANS', _Act.char, payload: '%', tint: true, display: 'ANS'),
|
|
_Key('ANS', _Act.char, payload: '%', tint: true, display: 'ANS'),
|
|
|
_Key('=', _Act.commit, primary: true),
|
|
_Key('=', _Act.commit, primary: true),
|
|
|
],
|
|
],
|
|
@@ -533,7 +547,7 @@ class _CalculatorPageState extends State<CalculatorPage> {
|
|
|
|
|
|
|
|
// 7 行 + 6 个间隙,再扣掉 Padding 上下各 6 ——
|
|
// 7 行 + 6 个间隙,再扣掉 Padding 上下各 6 ——
|
|
|
// box.maxHeight 是 padding **之前**的高度,漏掉会溢出。
|
|
// box.maxHeight 是 padding **之前**的高度,漏掉会溢出。
|
|
|
- final h = (box.maxHeight - 12 - 6 * 6) / 7;
|
|
|
|
|
|
|
+ final h = (box.maxHeight - 12 - 7 * 6) / 8;
|
|
|
return Padding(
|
|
return Padding(
|
|
|
padding: const EdgeInsets.all(6),
|
|
padding: const EdgeInsets.all(6),
|
|
|
child: Column(
|
|
child: Column(
|
|
@@ -597,6 +611,8 @@ enum _Act {
|
|
|
fn,
|
|
fn,
|
|
|
fnPrefixed,
|
|
fnPrefixed,
|
|
|
bigOp,
|
|
bigOp,
|
|
|
|
|
+ brace,
|
|
|
|
|
+ newRow,
|
|
|
sqrt,
|
|
sqrt,
|
|
|
group,
|
|
group,
|
|
|
power,
|
|
power,
|