Загрузил(а) файлы в 'flutter/lib/pages'

This commit is contained in:
Морозов Андрей 2021-11-11 10:35:34 +00:00
parent d28f08679e
commit 44c4c47872
1 changed files with 31 additions and 23 deletions

View File

@ -6,9 +6,9 @@ import 'package:flutter/material.dart';
Graphs getGraph() { Graphs getGraph() {
List<Dot> d = <Dot>[]; List<Dot> d = <Dot>[];
d.add(Dot.fromTwoLists("1", [2, 3], [5, 1])); d.add(Dot.fromTwoLists("1", [2], [3]));
d.add(Dot.fromTwoLists("2", [1, 3], [1, 1])); d.add(Dot.fromTwoLists("2", [3], [1]));
d.add(Dot.fromTwoLists("3", [1, 2], [1, 2])); d.add(Dot.fromTwoLists("3", [1], [2]));
//d.add(Dot.fromTwoLists("Name1", [], [])); //d.add(Dot.fromTwoLists("Name1", [], []));
//d.add(Dot.fromTwoLists("Name2", [], [])); //d.add(Dot.fromTwoLists("Name2", [], []));
return Graphs.fromList("Имя графа", d, true, true); return Graphs.fromList("Имя графа", d, true, true);
@ -77,8 +77,11 @@ class _DrawingPageState extends State<DrawingPage> {
void showPopUp(String alertTitle, String err) => showDialog<String>( void showPopUp(String alertTitle, String err) => showDialog<String>(
context: context, context: context,
builder: (BuildContext context) => AlertDialog( builder: (BuildContext context) => AlertDialog(
title: Text(alertTitle), title: Text(alertTitle, style: const TextStyle(fontSize: 26)),
content: Text(err), content: Text(
err,
style: const TextStyle(fontSize: 18),
),
actions: <Widget>[ actions: <Widget>[
TextButton( TextButton(
onPressed: () => Navigator.pop(context, 'OK'), onPressed: () => Navigator.pop(context, 'OK'),
@ -146,7 +149,7 @@ class _DrawingPageState extends State<DrawingPage> {
SizedBox dropList1(double width) { SizedBox dropList1(double width) {
var button = DropdownButton( var button = DropdownButton(
hint: const Text( hint: const Text(
'Select Dot', 'Select dot',
style: TextStyle(color: Colors.white, fontSize: 13), style: TextStyle(color: Colors.white, fontSize: 13),
), ),
//icon: const Icon(Icons.fiber_manual_record, color: Colors.white), //icon: const Icon(Icons.fiber_manual_record, color: Colors.white),
@ -211,7 +214,7 @@ class _DrawingPageState extends State<DrawingPage> {
width: width, width: width,
); );
} }
// *************inputs************* // *************inputs*************
//*********ButtonsFunctions********* //*********ButtonsFunctions*********
void addDotPushed() { void addDotPushed() {
@ -232,9 +235,9 @@ class _DrawingPageState extends State<DrawingPage> {
void addPathPushed() { void addPathPushed() {
clearDropDownVals(); clearDropDownVals();
if (dropdownValue1 == null) { if (dropdownValue1 == null) {
showPopUp("Error", "Select output dot"); showPopUp("Error", "No dot in first box selected");
} else if (dropdownValue2 == null) { } else if (dropdownValue2 == null) {
showPopUp("Error", "select input dot"); showPopUp("Error", "No dot in second box selected");
} else if (_textLnthController.text == "" && graphData.getUseLengthBool()) { } else if (_textLnthController.text == "" && graphData.getUseLengthBool()) {
showPopUp("Error", "No length in \"Input length\" box"); showPopUp("Error", "No length in \"Input length\" box");
} else { } else {
@ -243,7 +246,7 @@ class _DrawingPageState extends State<DrawingPage> {
int? len = int.tryParse(_textLnthController.text); int? len = int.tryParse(_textLnthController.text);
if (len == null && graphData.getUseLengthBool()) { if (len == null && graphData.getUseLengthBool()) {
showPopUp("Error", showPopUp("Error",
"Can't parse input.\nInts only allowed in \"Dot number\", \"Destination number\" and \"Input length\""); "Can't parse input.\nInts only allowed in \"Input length\"");
} else { } else {
len ??= 0; len ??= 0;
setState(() { setState(() {
@ -272,9 +275,9 @@ class _DrawingPageState extends State<DrawingPage> {
void delPathPushed() { void delPathPushed() {
clearDropDownVals(); clearDropDownVals();
if (dropdownValue1 == null) { if (dropdownValue1 == null) {
showPopUp("Error", "No number in \"Dot number\" box"); showPopUp("Error", "No dot in first box selected");
} else if (dropdownValue2 == null) { } else if (dropdownValue2 == null) {
showPopUp("Error", "No name in \"Dot name\" box"); showPopUp("Error", "No dot in second box selected");
} else { } else {
int? from = int.tryParse(dropdownValue1!); int? from = int.tryParse(dropdownValue1!);
int? to = int.tryParse(dropdownValue2!); int? to = int.tryParse(dropdownValue2!);
@ -350,9 +353,9 @@ class _DrawingPageState extends State<DrawingPage> {
void bfsPushed() { void bfsPushed() {
clearDropDownVals(); clearDropDownVals();
if (dropdownValue1 == null) { if (dropdownValue1 == null) {
showPopUp("Error", "No number in \"Dot number\" box"); showPopUp("Error", "No dot in first box selected");
} else if (dropdownValue2 == null) { } else if (dropdownValue2 == null) {
showPopUp("Error", "No number in \"Destination number\" box"); showPopUp("Error", "No dot in second box selected");
} else { } else {
setState(() { setState(() {
startDot = int.parse(dropdownValue1!); startDot = int.parse(dropdownValue1!);
@ -372,7 +375,7 @@ class _DrawingPageState extends State<DrawingPage> {
void dfsPushed() { void dfsPushed() {
clearDropDownVals(); clearDropDownVals();
if (dropdownValue1 == null) { if (dropdownValue1 == null) {
showPopUp("Error", "No number in \"Dot number\" box"); showPopUp("Error", "No dot in first box selected");
} else { } else {
setState(() { setState(() {
startDot = int.parse(dropdownValue1!); startDot = int.parse(dropdownValue1!);
@ -396,7 +399,7 @@ class _DrawingPageState extends State<DrawingPage> {
} else { } else {
setState(() { setState(() {
startDot = int.parse(dropdownValue1!); startDot = int.parse(dropdownValue1!);
currOp = "OP: DFS from $startDot"; currOp = "OP: Dijkstra from $startDot";
op = Operations.dijkstra; op = Operations.dijkstra;
intListPath = graphData.dijkstra(startDot!); intListPath = graphData.dijkstra(startDot!);
}); });
@ -499,28 +502,33 @@ class _DrawingPageState extends State<DrawingPage> {
createButton("Save to file", fileSaver), createButton("Save to file", fileSaver),
createButton("Load from file", fileOpener), createButton("Load from file", fileOpener),
createButton("Help", () { createButton("Help", () {
/*
String out = String out =
" В поле \"Graph name\" можно сменить имя графу.\n"; " В поле \"Graph name\" можно сменить имя графу.\n";
out += out +=
" Для добавления точки необходимо ввести имя в \"Dot name\" и нажать на \"Add dot\".\n"; " Для добавления точки необходимо ввести имя в \"Dot name\" и нажать на \"Add dot\".\n";
out += out +=
" Для удаления точки необходимо ввести номер в \"Dot number\" и нажать на \"Del dot\".\n"; " Для удаления точки необходимо выбрать номер в левом выпадающем списке и нажать на \"Del dot\".\n";
out += out +=
" Для добавления пути необходимо ввести: номер выходной вершины в \"Dot number\", номер входной вершины в \"Destination number\" "; " Для добавления пути необходимо выбрать: первую вершину в левом выпадающем списке, вторую вершину в правом выпадающем списке, ";
out += out +=
"и, если граф взвешенный, то ввести длину пути в \"Input length\". Затем нажать \"Add path\".\n"; "и, если граф взвешенный, то ввести длину пути в \"Input length\". Затем нажать \"Add path\".\n";
out += out +=
" Для удаления пути необходимо ввести номер выходной вершины в \"Dot number\" и номер входной вершины в \"Destination number\". Затем нажать \"Del path\".\n\n"; " Для удаления пути необходимо выбрать первую вершину из левого списка и вторую вершину в правом списке. Затем нажать \"Del path\".\n\n";
out += out +=
" Кнопки \"Bfs\" и \"Dfs\" нумеруют точки в зависимости от послежовательности, в которой они будут пройдены.\n"; " Кнопка \"Bfs\" отмечает точки в пути из вершины, выбранной слева, в вершину, выбранную справа.\n";
out +=
" Кнопка \"Dfs\" помечает точки, которые доступны из вершины, выбранной слева.";
out +=
" Кнопка \"Dijkstra\" ищет кратчайший путь из вершины, выбранной слева. во все другие.";
out +=
" Кнопка \"Clear op\" отменяет \"Bfs\", \"Dfs\" и \"Dijkstra\". Все эти отображения так же отменяются при любых действиях с графом.";
out += out +=
" Кнопки \"Взвешенный\" и \"Ориентированный\" позволяют сменить эти значения перед построением графа (т.е. для их работы граф должен быть пустым).\n"; " Кнопки \"Взвешенный\" и \"Ориентированный\" позволяют сменить эти значения перед построением графа (т.е. для их работы граф должен быть пустым).\n";
out += out +=
" Кнопки \"Save to file\" и \"Load from file\" позволяют вывести информацию в файл и загрузить информацию из файла соответственно.\n"; " Кнопки \"Save to file\" и \"Load from file\" позволяют вывести информацию в файл и загрузить информацию из файла соответственно.\n";
out += out +=
" Кнопка \"Help\" описывает работу с интерфейсом программы.";*/ " Кнопка \"Help\" описывает работу с интерфейсом программы.";
showPopUp("Help:", "На переработке"); showPopUp("Help:", out);
}) })
], ],
), ),