Skip to content

Commit

Permalink
renove unnecessary variable in matrixmodel
Browse files Browse the repository at this point in the history
  • Loading branch information
DXie123 committed Nov 8, 2019
1 parent e30581c commit cc84b5d
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 45 deletions.
6 changes: 3 additions & 3 deletions lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -28,16 +28,15 @@ class MyApp extends StatelessWidget {
initialBuilder: (context) => MathModel(),
builder: (context, settings, model) =>
model..changeSetting(
precision: settings.precision.toInt(),
precision: settings.precision.toInt(),
isRadMode: settings.isRadMode
),
),
ChangeNotifierProxyProvider<SettingModel, MatrixModel>(
initialBuilder: (context) => MatrixModel(),
builder: (context, settings, model) =>
model..changeSetting(
precision: settings.precision.toInt(),
isRadMode: settings.isRadMode
precision: settings.precision.toInt(),
),
),
ListenableProvider<CalculationMode>(
Expand Down Expand Up @@ -90,6 +89,7 @@ class _HomePageState extends State<HomePage> with SingleTickerProviderStateMixin
},
),
title: TabBar(
indicatorColor: Colors.blueAccent[400],
controller: tabController,
labelColor: Colors.black,
tabs: <Widget>[
Expand Down
70 changes: 29 additions & 41 deletions lib/src/mathmodel.dart
Original file line number Diff line number Diff line change
Expand Up @@ -92,80 +92,68 @@ class MathModel with ChangeNotifier {
}

class MatrixModel with ChangeNotifier {
List<String> _matrixExpression = [''];
List _result = [''];
List<String> _matrixExpHistory = [''];
String _matrixExression;
Matrix _matrix;
int _precision;
bool _isRadMode;
bool single = true;
bool square = true;

num get result => _result.last;

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

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

void norm() {
final mp = MatrixParser(_matrixExpression.last, precision: _precision);
Matrix matrix = mp.parse();
_result.last = matrix.det();
_matrixExpression.add('');
_result.add(_result.last);
_matrixExpHistory.add(_matrixExression);
_matrixExression = _matrix.det().toString();
single = false;
square = false;
notifyListeners();
}

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

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

String display() {
List<String> matrixRows = [];
for (var i = 0; i < _result.last.m; i++) {
matrixRows.add(_result.last[i].join('&'));
List<int> uniCode = _matrixExression.runes.toList();
for (var i = 0; i < uniCode.length; i++) {
if (uniCode[i] == 92) {
uniCode.insert(i, 92);
i++;
}
}
String matrixString = matrixRows.join(r'\\\\');
matrixString = r'\\begin{bmatrix}' + matrixString + r'\\end{bmatrix}';
return matrixString;
return String.fromCharCodes(uniCode);
}

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

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

}
Expand Down
2 changes: 1 addition & 1 deletion lib/src/result.dart
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ class MatrixButton extends StatelessWidget {
onPressed: () {
model.norm();
mathBoxController.deleteAllExpression();
mathBoxController.addString(model.result.toString());
mathBoxController.addString(model.display());
},
):
SizedBox(height: 0.0,),
Expand Down

0 comments on commit cc84b5d

Please sign in to comment.