Skip to content

Commit

Permalink
can tap matrix button multiple times
Browse files Browse the repository at this point in the history
  • Loading branch information
DXie123 committed Nov 8, 2019
1 parent dd98e9f commit e30581c
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 8 deletions.
1 change: 1 addition & 0 deletions assets/html/homepage.html
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@

function addString(message) {
mathField.write(message);
postLaTex();
}

function delString() {
Expand Down
34 changes: 26 additions & 8 deletions lib/src/mathmodel.dart
Original file line number Diff line number Diff line change
Expand Up @@ -98,40 +98,48 @@ class MatrixModel with ChangeNotifier {
bool _isRadMode;
bool single = true;
bool square = true;
Matrix matrix;

bool get result => _result.last;
num get result => _result.last;

void updateExpression(String expression) {
_matrixExpression.last = expression;
final mp = MatrixParser(_matrixExpression.last, precision: _precision);
matrix = mp.parse();
final mp = MatrixParser(_matrixExpression.last);
mp.tokenize();
mp.matrixParse();
single = mp.single;
square = mp.square;
notifyListeners();
}

void calc() {
final mp = MatrixParser(_matrixExpression.last, precision: _precision);
Matrix matrix = mp.parse();
_result.last = matrix;
_matrixExpression.add(_matrixExpression.last);
_keepExpression(_result.last);
_result.add(_result.last);
}

void norm() {
final mp = MatrixParser(_matrixExpression.last, precision: _precision);
Matrix matrix = mp.parse();
_result.last = matrix.det();
_matrixExpression.add(_matrixExpression.last);
_matrixExpression.add('');
_result.add(_result.last);
}

void transpose() {
final mp = MatrixParser(_matrixExpression.last, precision: _precision);
Matrix matrix = mp.parse();
_result.last = matrix.transpose();
_matrixExpression.add(_matrixExpression.last);
_keepExpression(_result.last);
_result.add(_result.last);
}

void invert() {
final mp = MatrixParser(_matrixExpression.last, precision: _precision);
Matrix matrix = mp.parse();
_result.last = matrix.inverse();
_matrixExpression.add(_matrixExpression.last);
_keepExpression(_result.last);
_result.add(_result.last);
}

Expand All @@ -145,6 +153,16 @@ class MatrixModel with ChangeNotifier {
return matrixString;
}

void _keepExpression(Matrix inputMatrix) {
List<String> matrixRows = [];
for (var i = 0; i < inputMatrix.m; i++) {
matrixRows.add(inputMatrix[i].join('&'));
}
String matrixString = matrixRows.join(r'\\');
matrixString = r'\begin{bmatrix}' + matrixString + r'\end{bmatrix}';
_matrixExpression.add(matrixString);
}

void changeSetting({int precision, bool isRadMode}) {
this._precision = precision;
this._isRadMode = isRadMode;
Expand Down

0 comments on commit e30581c

Please sign in to comment.