feat: add FormulaList widget and force unit definitions
This commit is contained in:
parent
681d9215b3
commit
00eb595d2d
3 changed files with 74 additions and 20 deletions
39
lib/ai/formula_list.dart
Normal file
39
lib/ai/formula_list.dart
Normal file
|
|
@ -0,0 +1,39 @@
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:d4rt_formulas/formula_models.dart';
|
||||||
|
import '../corpus.dart';
|
||||||
|
import 'formula_screen.dart';
|
||||||
|
|
||||||
|
class FormulaList extends StatelessWidget {
|
||||||
|
final Corpus corpus;
|
||||||
|
final List<Formula> formulas;
|
||||||
|
|
||||||
|
const FormulaList({
|
||||||
|
super.key,
|
||||||
|
required this.corpus,
|
||||||
|
required this.formulas,
|
||||||
|
});
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return ListView.builder(
|
||||||
|
itemCount: formulas.length,
|
||||||
|
itemBuilder: (context, index) {
|
||||||
|
final formula = formulas[index];
|
||||||
|
return ListTile(
|
||||||
|
title: Text(formula.name),
|
||||||
|
onTap: () {
|
||||||
|
Navigator.push(
|
||||||
|
context,
|
||||||
|
MaterialPageRoute(
|
||||||
|
builder: (context) => FormulaScreen(
|
||||||
|
formula: formula,
|
||||||
|
corpus: corpus,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
31
lib/defaults/units/force.d4rt.units
Normal file
31
lib/defaults/units/force.d4rt.units
Normal file
|
|
@ -0,0 +1,31 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "newton",
|
||||||
|
"symbol": "N",
|
||||||
|
"isBase": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "kilonewton",
|
||||||
|
"symbol": "kN",
|
||||||
|
"baseUnit": "newton",
|
||||||
|
"factor": 1000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "meganewton",
|
||||||
|
"symbol": "MN",
|
||||||
|
"baseUnit": "newton",
|
||||||
|
"factor": 1000000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "dyne",
|
||||||
|
"symbol": "dyn",
|
||||||
|
"baseUnit": "newton",
|
||||||
|
"factor": 0.00001
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "pound-force",
|
||||||
|
"symbol": "lbf",
|
||||||
|
"baseUnit": "newton",
|
||||||
|
"factor": 4.44822
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
@ -5,6 +5,7 @@ import 'package:resource_portable/resource.dart' show Resource;
|
||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
|
||||||
import 'ai/formula_screen.dart';
|
import 'ai/formula_screen.dart';
|
||||||
|
import 'ai/formula_list.dart';
|
||||||
import 'corpus.dart';
|
import 'corpus.dart';
|
||||||
import 'defaults/default_corpus.dart';
|
import 'defaults/default_corpus.dart';
|
||||||
|
|
||||||
|
|
@ -19,26 +20,9 @@ void main() {
|
||||||
}
|
}
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
appBar: AppBar(title: const Text('Formulas')),
|
appBar: AppBar(title: const Text('Formulas')),
|
||||||
body: ListView.builder(
|
body: FormulaList(
|
||||||
itemCount: snapshot.data!.getFormulas().length,
|
corpus: snapshot.data!,
|
||||||
itemBuilder: (context, index) {
|
formulas: snapshot.data!.getFormulas(),
|
||||||
final formula = snapshot.data!.getFormulas()[index];
|
|
||||||
return ListTile(
|
|
||||||
title: Text(formula.name),
|
|
||||||
subtitle: Text(formula.description ?? ''),
|
|
||||||
onTap: () {
|
|
||||||
Navigator.push(
|
|
||||||
context,
|
|
||||||
MaterialPageRoute(
|
|
||||||
builder: (context) => FormulaScreen(
|
|
||||||
formula: formula,
|
|
||||||
corpus: snapshot.data!,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
},
|
|
||||||
);
|
|
||||||
},
|
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue