Risolto un bug nella conversione, modificata la struttura della grafica di conversione e quasi terminato unità di lunghezza

This commit is contained in:
damianoferrari8
2018-10-02 08:22:49 +02:00
parent 5d48af0a14
commit 6fa4ce1291
5 changed files with 135 additions and 57 deletions
+1
View File
@@ -10,6 +10,7 @@
<excludeFolder url="file://$MODULE_DIR$/.pub" />
<excludeFolder url="file://$MODULE_DIR$/build" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="Dart SDK" level="project" />
<orderEntry type="library" name="Flutter Plugins" level="project" />
+93
View File
@@ -0,0 +1,93 @@
import 'package:converter_pro/ConversionPage.dart';
import 'package:converter_pro/Utils.dart';
import 'package:flutter/material.dart';
class ConversionManager extends StatefulWidget{
@override
_ConversionManager createState() => new _ConversionManager();
}
class _ConversionManager extends State<ConversionManager>{
static Node metro=Node(name: "Metro",
leafNodes: [
Node(isMultiplication: false, coefficient: 1000.0, name: "Millimetro",),
Node(isMultiplication: false, coefficient: 1000000.0, name: "Micrometro", ),
Node(isMultiplication: false, coefficient: 1000000000.0, name: "Nanometro",),
Node(isMultiplication: true, coefficient: 1000.0, name: "Chilometro",leafNodes: [
Node(isMultiplication: true, coefficient: 149597870.7, name: "Unità Astronomica",leafNodes: [
Node(isMultiplication: true, coefficient: 63241.1, name: "Anno Luce",),
]),
]),
Node(isMultiplication: false, coefficient: 100.0, name: "Centimetro", leafNodes: [
Node(isMultiplication: true, coefficient: 2.54, name: "Pollice", leafNodes: [
Node(isMultiplication: true, coefficient: 12.0, name: "Piede"),
]),
]),
]
);
int currentPage=0;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: new Text("Lunghezza"),),
drawer: new Drawer(child: ListView(
// Important: Remove any padding from the ListView.
padding: EdgeInsets.zero,
children: <Widget>[
DrawerHeader(
child: Text('Converter PRO'),
decoration: BoxDecoration(
color: Colors.red,
),
),
ListTile(
title: Text("Lunghezza"),
selected: true,
onTap: () {
if(currentPage!=0) {
setState((){
currentPage=0;
});
}
},
),
ListTile(
title: Text("Superficie"),
onTap: () {
// Update the state of the app
// ...
},
),
ListTile(
title: Text("Volume"),
onTap: () {
// Update the state of the app
// ...
},
),
ListTile(
title: Text("Tempo"),
onTap: () {
// Update the state of the app
// ...
},
),
ListTile(
title: Text("Temperatura"),
onTap: () {
// Update the state of the app
// ...
},
),
],
),),
body: currentPage==0 ? ConversionPage(metro) : ConversionPage(metro)
);
}
}
+9 -18
View File
@@ -3,7 +3,6 @@ import 'package:flutter/material.dart';
import 'package:fluttertoast/fluttertoast.dart';
class ConversionPage extends StatefulWidget {
ConversionPage(this.fatherNode);
Node fatherNode;
@@ -13,7 +12,6 @@ class ConversionPage extends StatefulWidget{
}
class _ConversionPage extends State<ConversionPage> {
Node fatherNode;
List<Node> listaNodi;
List<TextEditingController> listaController = new List();
@@ -23,7 +21,6 @@ class _ConversionPage extends State<ConversionPage>{
_ConversionPage(Node fatherNode) {
this.fatherNode = fatherNode;
listaNodi = fatherNode.getNodiFiglio();
}
@override
@@ -69,14 +66,17 @@ class _ConversionPage extends State<ConversionPage>{
if (nodo.value != null && !nodo.selectedNode)
controller.text = nodo.value.toString();
else if(nodo.value==null && !nodo.selectedNode)
controller.text = "";
else if (nodo.value == null && !nodo.selectedNode) controller.text = "";
listaCard.add(new UnitCard(
node: nodo,
textField: TextField(
style: TextStyle(fontSize: 16.0,color: Colors.black,),
keyboardType: TextInputType.numberWithOptions(decimal: true,signed: false),
style: TextStyle(
fontSize: 16.0,
color: Colors.black,
),
keyboardType:
TextInputType.numberWithOptions(decimal: true, signed: false),
controller: controller,
focusNode: listaFocus[i],
onChanged: (String txt) {
@@ -86,24 +86,15 @@ class _ConversionPage extends State<ConversionPage>{
fatherNode.Convert();
});
},
)
));
)));
}
return listaCard;
}
@override
Widget build(BuildContext context) {
List<UnitCard> listCard = _createList();
return Scaffold(
appBar: AppBar(title: new Text("Lunghezza"),),
body: ListView(
padding: new EdgeInsets.all(10.0),
children: listCard
),
);
return ListView(padding: new EdgeInsets.all(10.0), children: listCard);
}
}
+4 -4
View File
@@ -63,11 +63,11 @@ class Node {
: (node.isMultiplication ? node.value * node.coefficient : node.value / node.coefficient); //metto in questo nodo il valore convertito
convertedNode = true;
_ApplyDown(); //converto i nodi sottostanti
} else { //se non c'è valore
if (node.leafNodes != null) { //Però ha almeno un nodo foglia
node.Convert(); //ripeti la procedura
Convert();
}
else if (node.leafNodes != null) { //Però ha almeno un nodo foglia
node.Convert(); //ripeti la procedura
if(node.convertedNode)
Convert();
}
}
}
+2 -9
View File
@@ -1,22 +1,15 @@
import 'package:converter_pro/ConversionPage.dart';
import 'package:converter_pro/Utils.dart';
import 'package:converter_pro/ConversionManager.dart';
import 'package:flutter/material.dart';
void main() => runApp(new App());
class App extends StatelessWidget {
static Node foot=Node(isMultiplication: true, coefficient: 12.0, name: "foot", selectedNode: false, convertedNode: false);
static Node inch=Node(isMultiplication: true, coefficient: 2.54, name: "inch", leafNodes: [foot], selectedNode: false, convertedNode: false);
static Node millimetro=Node(isMultiplication: false, coefficient: 10.0, name: "millimetro", selectedNode: false, convertedNode: false);
static Node centimetro=Node(isMultiplication: false, coefficient: 100.0, name: "centimetro", leafNodes: [millimetro,inch], selectedNode: false, convertedNode: false);
static Node metro=Node(name: "metro", leafNodes: [centimetro], selectedNode: false, convertedNode: false);
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'FCM - Calculator',
home: ConversionPage(metro),
home: ConversionManager(),
theme: ThemeData(
primaryColor: Colors.red,
accentColor: Colors.indigo,