Commit e36336a8 authored by Ravishan S.A.A. IT20241032's avatar Ravishan S.A.A. IT20241032

Merge branch 'master' into 'it20241032'

# Conflicts:
#   README.md
parents bfc763da cb89d61f
# 2023-156 # 2023-156
**"AGROX - Elevating Cinnamon Industry through Expert Guidance and Support"** *"AGROX - Elevating Cinnamon Industry through Expert Guidance and Support"*
Main objective: <!--<img src="http://gitlab.sliit.lk/-/ide/project/2023-156/2023-156/blob/master/-/Agrox-HomeUI.jpeg" alt="UI-Home-Agrox">-->
![Home-UI](http://gitlab.sliit.lk/-/ide/project/2023-156/2023-156/blob/master/-/Agrox-HomeUI.jpeg)
*Main objective*:
In this research study, we are developing a mobile application for the Cinnamon industry to provide functionalities to guide through ideal growing conditions, planting and harvesting procedures, disease identification and management, market and quality assurance, and a platform and a trained virtual assistant for additional support. This application is for beginners to expert-level industrial personnel and anyone who seeks knowledge. In this research study, we are developing a mobile application for the Cinnamon industry to provide functionalities to guide through ideal growing conditions, planting and harvesting procedures, disease identification and management, market and quality assurance, and a platform and a trained virtual assistant for additional support. This application is for beginners to expert-level industrial personnel and anyone who seeks knowledge.
Main Research questions: *Research questions*:
What is the purpose of the mobile application being developed for the Cinnamon industry in this research study?
*Individual research question*:
Individual research question: sub obj 1:
What is the research project's objective related to providing current local cinnamon market information and forecasting market status using deep learning?
sub obj 2:
What is the identified disease and what would be the output of this diagnosis?
Individual Objectives: sub obj3:
What is the objective of the virtual assistance for Cinnamon Industry related application?
Sub Objective 1: sub obj 4:
Provide accurate information on the current local cinnamon market status and provide market status forecasting and prediction using deep learning. Why is it important for cinnamon growers to screen their crops according to quality standards?
*Individual Objectives*:
Sub Objective 2: **Sub Objective 1**:
Plant Status Analysis and diagnosis of diseases (Rough Bark Disease) through computer vision. Provide accurate information on the current local cinnamon market status and provide market status forecasting and prediction using deep learning.
**Sub Objective 2**:
Plant Status Analysis and diagnosis of diseases (Rough Bark Disease) through computer vision.
Sub Objective 3: **Sub Objective 3**:
Community platform and trained virtual assistant for additional queries using artificial intelligence and deep learning. Community platform and trained virtual assistant for additional queries using artificial intelligence and deep learning.
**Sub Objective 4**:
Sub Objective 4:
Determines the grade of cinnamon quills, through Image processing. Determines the grade of cinnamon quills, through Image processing.
Other necessary information: *Other necessary information*:
Frontend: Flutter * Frontend: Flutter
Backend: Python * Backend: Python
NN: RNN & CNN * NN: RNN & CNN
Libraries: Flusk / TensorFlow * Libraries: Flusk / TensorFlow
Algorithm : LSTM * Algorithm : LSTM
\ No newline at end of file
Model Created for Price Prediction
\ No newline at end of file
import 'package:flutter/material.dart';
class AskQuestionPage extends StatefulWidget {
const AskQuestionPage({super.key});
@override
State<AskQuestionPage> createState() => _AskQuestionPageState();
}
class _AskQuestionPageState extends State<AskQuestionPage> {
final _formKey = GlobalKey<FormState>();
String dropdownvalue = 'One';
@override
Widget build(BuildContext context) {
return Form(
key: _formKey,
child: Column(
children: <Widget>[
const SizedBox(
height: 10,
),
const Text(
'Ask Question',
style: TextStyle(
fontSize: 20,
fontWeight: FontWeight.bold,
fontFamily: 'Roboto'),
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
const Align(
alignment: Alignment.center,
child: SizedBox(
width: 50,
child: Text(
'Type',
textAlign: TextAlign.center,
style: TextStyle(
fontWeight: FontWeight.bold,
),
),
)),
DropdownButton(
focusColor: Colors.white,
value: dropdownvalue,
items: const <DropdownMenuItem<String>>[
DropdownMenuItem(
value: 'One',
child: Text('Preparation'),
),
DropdownMenuItem(
value: 'Two',
child: Text('Planting'),
),
DropdownMenuItem(
value: 'Three',
child: Text('Harvesting'),
),
],
//Following line, ? after String implies that
// dropdown value can be NULL (TypeSafety Feature).
onChanged: (String? newValue) {
setState(() {
dropdownvalue = newValue!;
});
},
)
],
),
Row(
children: [
const Align(
alignment: Alignment.center,
child: SizedBox(
width: 200,
child: Text(
'Title',
textAlign: TextAlign.center,
style: TextStyle(
fontWeight: FontWeight.bold,
),
),
)),
SizedBox(
width: 100,
child: TextFormField(
textAlign: TextAlign.center,
validator: (value) {
if (value == null || value.isEmpty) {
return 'Please enter some text';
}
return null;
},
),
)
],
),
const SizedBox(
height: 20,
),
const Align(
alignment: Alignment.center,
child: SizedBox(
width: 200,
child: Text(
'Description',
textAlign: TextAlign.center,
style: TextStyle(
fontWeight: FontWeight.bold,
),
),
)),
const SizedBox(
height: 20,
),
SizedBox(
width: 300,
height: 100,
child: TextFormField(
textAlign: TextAlign.center,
decoration: const InputDecoration(
enabledBorder: OutlineInputBorder(),
),
validator: (value) {
if (value == null || value.isEmpty) {
return 'Please enter some text';
}
return null;
},
),
),
const Align(
alignment: Alignment.center,
child: SizedBox(
child: Text(
'Tags',
textAlign: TextAlign.center,
style: TextStyle(
fontWeight: FontWeight.bold,
),
),
)),
const SizedBox(
height: 20,
),
Row(
children: [
Container(
margin: const EdgeInsets.only(left: 75.0, right: 10.0),
padding: const EdgeInsets.all(3.0),
decoration: BoxDecoration(
border: Border.all(color: Colors.blueAccent)),
child: const Text('Temperature'),
),
Container(
margin: const EdgeInsets.only(left: 5.0, right: 10.0),
padding: const EdgeInsets.all(3.0),
decoration: BoxDecoration(
border: Border.all(color: Colors.blueAccent)),
child: const Text('Soil'),
),
Container(
margin: const EdgeInsets.only(left: 5.0, right: 10.0),
padding: const EdgeInsets.all(3.0),
decoration: BoxDecoration(
border: Border.all(color: Colors.blueAccent)),
child: const Text('Pesticides'),
),
],
),
const SizedBox(
height: 20,
),
OutlinedButton(
onPressed: () {},
child: const Text('Add Tag'),
),
const SizedBox(
height: 10,
),
ElevatedButton(
onPressed: () {
//Validate returns true if the form is valid,
// or false otherwise
if (_formKey.currentState!.validate()) {
ScaffoldMessenger.of(context).showSnackBar(const SnackBar(
content: Text('Processing Data'),
));
}
},
child: const Text('Submit'),
),
],
));
}
}
import 'package:flutter/material.dart';
import 'ask_question.dart';
class CommunityHomePage extends StatefulWidget {
const CommunityHomePage({super.key});
@override
State<CommunityHomePage> createState() => _CommunityHomePageState();
}
class _CommunityHomePageState extends State<CommunityHomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: SingleChildScrollView(
child: Column(
children: [
const Divider(height: 10),
_cardBox(context, 'Ask Question', 'images/ask_question.jpg',
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => const AskQuestionPage()),
);
}),
const Divider(height: 10),
_cardBox(
context,
'Browse Community',
'images/browse_community.jpg',
onPressed: () {},
),
//const Divider(height: 10),
],
)));
}
}
Widget _cardBox(BuildContext context, String text, String image,
{required void Function() onPressed}) {
return Container(
width: double.infinity,
height: 200,
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(10),
border: Border.all(color: Colors.black, width: 2),
),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
text,
style: const TextStyle(fontSize: 20, color: Colors.black),
),
Image.asset(
image,
fit: BoxFit.cover,
height: 150,
),
GestureDetector(
onTap: onPressed,
child: Container(),
),
],
),
);
}
import 'package:flutter/material.dart';
import 'package:lottie/lottie.dart';
import 'package:google_fonts/google_fonts.dart';
class GradesPrediction extends StatefulWidget {
const GradesPrediction({super.key});
@override
State<GradesPrediction> createState() => _GradesPredictionState();
}
class _GradesPredictionState extends State<GradesPrediction> {
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.grey.shade900,
appBar: AppBar(
backgroundColor: Colors.black,
title: Text(
"Grading",
style: GoogleFonts.roboto(
color: Colors.white,
fontWeight: FontWeight.bold,
),
),
leading: GestureDetector(
onTap: () {
Navigator.of(context).pop();
},
child: Icon(
Icons.arrow_back,
color: Colors.white,
),
),
),
body: Container(
margin: EdgeInsets.symmetric(
horizontal: MediaQuery.of(context).size.width / 15),
child: Center(
child: SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text(
"Scan your product",
style: GoogleFonts.roboto(
fontSize: MediaQuery.of(context).size.width / 10,
fontWeight: FontWeight.w600,
color: Colors.white,
),
textAlign: TextAlign.center,
),
Text(
"Make sure to get a closeup look on the product",
style: GoogleFonts.roboto(
fontSize: MediaQuery.of(context).size.width / 20,
fontWeight: FontWeight.w400,
color: Colors.white70,
),
textAlign: TextAlign.center,
),
SizedBox(
height: MediaQuery.of(context).size.height / 10.5,
),
GestureDetector(
onTap: () {
// _getFromGallery();
},
child: Container(
width: MediaQuery.of(context).size.width,
child: LottieBuilder.asset(
"assets/lottie/scanner.json",
),
),
// child: DottedBorder(
// color: Colors.black,
// strokeWidth: 2,
// dashPattern: [6, 3, 2, 3],
// strokeCap: StrokeCap.round,
// borderType: BorderType.Circle,
// child: Container(
// width: MediaQuery.of(context).size.width,
// child: Stack(
// alignment: Alignment.center,
// children: [
// Lottie.asset(
// "assets/lottie/plant-moving.json",
// height: MediaQuery.of(context).size.height / 3.5,
// ),
// Lottie.asset(
// "assets/lottie/scanner.json",
// ),
// ],
// ),
// ),
// ),
)
],
),
),
),
),
);
}
}
...@@ -3,7 +3,6 @@ import 'package:flutter/src/widgets/framework.dart'; ...@@ -3,7 +3,6 @@ import 'package:flutter/src/widgets/framework.dart';
import 'package:flutter/src/widgets/placeholder.dart'; import 'package:flutter/src/widgets/placeholder.dart';
import 'package:google_fonts/google_fonts.dart'; import 'package:google_fonts/google_fonts.dart';
import 'package:lottie/lottie.dart'; import 'package:lottie/lottie.dart';
import 'package:client/about/home.dart';
class WelcomePage extends StatelessWidget { class WelcomePage extends StatelessWidget {
const WelcomePage({super.key}); const WelcomePage({super.key});
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment