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 'ai/formula_screen.dart';
|
||||
import 'ai/formula_list.dart';
|
||||
import 'corpus.dart';
|
||||
import 'defaults/default_corpus.dart';
|
||||
|
||||
|
|
@ -19,26 +20,9 @@ void main() {
|
|||
}
|
||||
return Scaffold(
|
||||
appBar: AppBar(title: const Text('Formulas')),
|
||||
body: ListView.builder(
|
||||
itemCount: snapshot.data!.getFormulas().length,
|
||||
itemBuilder: (context, index) {
|
||||
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,
|
||||
body: FormulaList(
|
||||
corpus: snapshot.data!,
|
||||
),
|
||||
),
|
||||
);
|
||||
},
|
||||
);
|
||||
},
|
||||
formulas: snapshot.data!.getFormulas(),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue