Assisgnment Foormat
Assisgnment Foormat
Assisgnment Foormat
Second Year
Bachelor of Computer Application (S.Y.B.C.A.)
Semester - IV
File Submission
YEAR: 2021 - 22
Submitted by
Patil Vaibhav
Roll No. :-131
Exam No.:- 2020050041
Submitted To
Ms. Aarti Jariwala
INDEX
Name: Patil Vaibhav
Class: SYBCA (SEM-4) Div.: B Roll No. 131 Exam Seat No. :- 2020050041
Subject: 406 – Mobile Application Development – II PRACTICAL FILE
Academic Year: 2021-22
Sr. Page
Program Defination Signature
No No.
1. 1
Railway Reservation
2. User Registration Page 16
3. ImageSlider 22
5. Factorial of a number 42
6 Armstrong Number 44
Ans :-
MainActivity.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<ImageView
android:id="@+id/imageView"
android:layout_width="100dp"
Page 1
android:layout_height="100dp"
android:layout_marginTop="20dp"
android:layout_centerHorizontal="true"
app:srcCompat="@drawable/logo" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="120dp"
android:orientation="vertical">
<Spinner
android:id="@+id/serchtrain"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="From"
android:id="@+id/from"
android:layout_marginTop="10dp"
android:textSize="20sp"/>
<Spinner
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:id="@+id/spifrom"/>
Page 2
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="To"
android:layout_marginLeft="70dp"
android:id="@+id/to"
android:layout_marginTop="10dp"
android:textSize="20sp"/>
<Spinner
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:id="@+id/to1"/>
</LinearLayout>
<EditText
android:id="@+id/name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:hint="Enter Passenger Name"
android:inputType="textPersonName"
android:textSize="20sp" />
<EditText
android:id="@+id/address"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:hint="Enter Your Address"
android:inputType="textPostalAddress"
android:textSize="20sp" />
Page 3
<EditText
android:id="@+id/numticket"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:hint="Enter number of Ticket"
android:inputType="number"
android:textSize="20sp" />
<EditText
android:id="@+id/selectdate"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10sp"
android:hint="Select date"
android:inputType="date"
android:onClick="setDate"
android:textSize="20sp" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:orientation="horizontal">
<TextView
android:id="@+id/viewclass"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="select class"
android:textSize="20dp" />
<Spinner
android:id="@+id/selectclass"
Page 4
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="30dp" />
</LinearLayout>
<Button
android:id="@+id/submmit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="140dp"
android:layout_marginTop="20dp"
android:text="subbmit" />
</LinearLayout>
</RelativeLayout>
MainActivity2.xml
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="200dp"
android:orientation="vertical">
Page 5
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:orientation="horizontal">
<TextView
android:id="@+id/trnname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="train name: "
android:textSize="20sp" />
<TextView
android:id="@+id/trnname1"
android:layout_width="wrap_content"
android:textSize="20sp"
android:layout_height="wrap_content"
android:ems="15" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:orientation="horizontal">
<TextView
android:id="@+id/pesname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Passenger name: "
android:textSize="20sp" />
Page 6
<TextView
android:id="@+id/pesname1"
android:layout_width="wrap_content"
android:textSize="20sp"
android:layout_height="wrap_content"
android:ems="12" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:orientation="horizontal">
<TextView
android:id="@+id/pesaddress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Address: "
android:textSize="20sp" />
<TextView
android:id="@+id/pesaddress1"
android:layout_width="wrap_content"
android:textSize="20sp"
android:layout_height="wrap_content"
android:ems="15" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:orientation="horizontal">
Page 7
<TextView
android:id="@+id/numbertic"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Number of Ticket: "
android:textSize="20sp" />
<TextView
android:id="@+id/numbertic1"
android:layout_width="wrap_content"
android:textSize="20sp"
android:layout_height="wrap_content"
android:ems="15" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:orientation="horizontal">
<TextView
android:id="@+id/ticdate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Date: "
android:textSize="20sp" />
<TextView
android:id="@+id/ticdate1"
android:layout_width="wrap_content"
android:textSize="20sp"
android:layout_height="wrap_content"
Page 8
android:ems="15" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:orientation="horizontal">
<TextView
android:id="@+id/ticclass"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Select class: "
android:textSize="20sp" />
<TextView
android:id="@+id/ticclass1"
android:layout_width="wrap_content"
android:textSize="20sp"
android:layout_height="wrap_content"
android:ems="14" />
</LinearLayout>
</LinearLayout>
</RelativeLayout>
MainActivity.java
package com.example.railway_reservation;
import androidx.appcompat.app.AppCompatActivity;
Page 9
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import java.util.Calendar;
Spinner spinner,spinner1,spinner2,spinner3;
EditTextname,address,numticket,date;
Button submmit;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
name=(EditText)findViewById(R.id.name);
address=(EditText)findViewById(R.id.address);
numticket=(EditText)findViewById(R.id.numticket);
date=(EditText)findViewById(R.id.selectdate);
Page 10
submmit=(Button)findViewById(R.id.submmit);
spinner = (Spinner) findViewById(R.id.serchtrain);
spinner1 = (Spinner) findViewById(R.id.selectclass);
spinner2 = (Spinner) findViewById(R.id.spifrom);
spinner3= (Spinner) findViewById(R.id.to1);
submmit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//i.putExtra("ONE",str);
i.putExtra("TWO",str1);
i.putExtra("THREE",str2);
i.putExtra("FOUR",str3);
i.putExtra("FIVE",str4);
// i.putExtra("SIX",str5);
startActivity(i);
}
});
//This part is datepicker
dateView = (TextView) findViewById(R.id.selectdate);
calendar = Calendar.getInstance();
year = calendar.get(Calendar.YEAR);
Page 11
month = calendar.get(Calendar.MONTH);
day = calendar.get(Calendar.DAY_OF_MONTH);
showDate(year, month+1, day);
Page 12
protected Dialog onCreateDialog(int id){
if (id==999){
return new DatePickerDialog(this,myDateListener, year, month, day);
}
return null;
}
}
}
MainActivity2.java
package com.example.railway_reservation;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;
Page 13
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
sertrain=(TextView) findViewById(R.id.trnname1);
pesname=(TextView) findViewById(R.id.pesname1);
pesadd=(TextView) findViewById(R.id.pesaddress1);
pasnum=(TextView) findViewById(R.id.numbertic1);
pesdate=(TextView) findViewById(R.id.ticdate1);
pesclass=(TextView) findViewById(R.id.ticclass1);
Intent i = getIntent();
// String str=i.getStringExtra("ONE");
String str1=i.getStringExtra("TWO");
String str2=i.getStringExtra("THREE");
String str3=i.getStringExtra("FOUR");
String str4=i.getStringExtra("FIVE");
//String str5=i.getStringExtra("ONE");
//sertrain.setText(str);
pesname.setText(str1);
pesadd.setText(str2);
pasnum.setText(str3);
pesdate.setText(str4);
// pesclass.setText(str5);
Page 14
Assignment – 2
Page 15
Q-1. Create a User Registration page including following Fields.
❖ Name
❖ Email ( use TextWatcher to check user provide Email)
❖ DOB (Use DateTimePicker Dialog)
❖ City (Use Spinner to select City)
❖ Course_Name (Use AutoCompleteTextView to suggest Course
name like BCA, BBA, MCA, etc )
❖ Provide Save Button Which shows Toast Message that User is
Created.
Ans :-
MainActivity.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="18dp"
android:background="@color/purple_200"
tools:context=".MainActivity">
<EditText
android:id="@+id/name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Enter Name"
android:textStyle="bold"
android:textSize="25dp"/
Page 16
<EditText
android:id="@+id/email"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textStyle="bold"
android:inputType="textEmailAddress"
android:hint="Enter E-Mail"
android:textSize="25dp"
android:layout_below="@+id/name"/>
<EditText
android:id="@+id/date"
android:onClick="datepicker"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Date Of Birth"
android:textSize="25dp"
android:textStyle="bold"
android:layout_below="@id/email"/>
<Spinner
android:id="@+id/city"
android:layout_width="match_parent"
android:layout_height="45dp"
android:textStyle="bold"
android:layout_below="@id/date"
android:scrollbarSize="25dp"/>
<AutoCompleteTextView
android:id="@+id/coursename"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/city"
Page 17
android:textStyle="bold"
android:hint="Enter Course Name"
android:textSize="25dp"/>
<Button
android:id="@+id/btnsave"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Save"
android:textStyle="bold"
android:textSize="30dp"
android:layout_below="@id/coursename"
android:layout_centerHorizontal="true"/>
</RelativeLayout>
MainActivity.java
package com.example.s128_registration;
import androidx.appcompat.app.AppCompatActivity;
import android.app.DatePickerDialog;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Toast;
import java.util.Calendar;
Page 18
public class MainActivity extends AppCompatActivity {
EditText name,email,date;
Spinner city;
Button btnsave;
String[] course =
{"BCA","BBA","MCA","B.COM","M.Com","MBA","DIPLOMA","ITI"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
date=(EditText) findViewById(R.id.date);
city=(Spinner)findViewById(R.id.city);
btnsave = (Button)findViewById(R.id.btnsave);
ArrayAdapter<String>(this,android.R.layout.simple_dropdown_item_1line,city
name);
city.setAdapter(adapter1);
Page 19
btnsave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, "User is Created",
Toast.LENGTH_SHORT).show();
}
});
}
Page 20
Q – 2>
Output :-
Page 21
Q-2. Create ImageSlider with Button below it to View it seperately in
Different Activity.
Ans.
MainActivity.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:padding="20dp"
android:orientation="vertical">
<ImageSwitcher
android:layout_width="match_parent"
android:layout_height="250dp"
android:id="@+id/imageswitcher"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/next"
android:text="Next"
android:layout_marginTop="100dp"
android:layout_gravity="center"
/>
</LinearLayout>
Page 22
MainActivity.java
package com.example.S128_ImageSlider;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ViewSwitcher;
ImageSwitcher imageSwitcher;
Button button;
int imageIdList[]={R.drawable.image1,R.drawable.image2,R.drawable.image3};
int count=imageIdList.length;
int currentIndex=-1;
@Override
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageSwitcher=(ImageSwitcher) findViewById(R.id.imageswitcher);
Page 23
imageSwitcher.setFactory(new ViewSwitcher.ViewFactory() {
@Override
imageView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup
.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT));
return imageView;
});
button.setOnClickListener(new View.OnClickListener() {
@Override
currentIndex++;
if (currentIndex==count)
currentIndex=0;
imageSwitcher.setImageResource(imageIdList[currentIndex]);
});
Page 24
Output :-
Page 25
Page 26
Assignment - 3
Create a Food Delivery Application, showing Custom List Of
Food Items with itsrespective price. Clicking of any Food
Item, will open another layout with all thedetails of the
selectedItem. In Detail layout use Image Slider component
withmultiplefoodimages.
Ans.:-
Main.dart
import
'package:flutter/material.dart'
;import'home_page.dart';
voidmain()
{runApp(constMy
App());
classMyApp extendsStatelessWidget{
constMyApp({Key?key}):super(key:key);
@override
Widgetbuild(BuildContextco
ntext){returnMaterialApp(
debugShowCheckedModeBanner:
Page 27
false,home:HomePage(),
);
}
food_item_widget.dart
import'package:flutter/material.dart';
StatelessWidget
{finalStringimagePath;
final String
name;finaldo
ubleprice;
constFoodItemWidget(
{Key?key,
requiredthis.image
Path,required
this.name,required
this.price})
: super(key:key)
@override
Widgetbuild(BuildContext
Page 28
context){returnContainer(
margin: const
EdgeInsets.only(bottom:
16),height:250,
width:double.infi
nity,child:Card(e
levation:10,
child:
Column(c
hildren:[E
xpanded(
flex:3,
child:Container(
decoration:
BoxDecoration(color:Col
ors.blue,image:Decoratio
nImage(
image:AssetImage(imagePath),fit:BoxFit
.fill)))),Expanded(
child:Padding(
padding:const
Page 29
EdgeInsets.symmetric(horizontal:16),chil
d:Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,children:
Text(
nam
e,
style
TextStyle(fontWeight:FontWeight.bold,fontSize:20),
),
Text(
"₹
$price",
style:
TextStyle(fontWeight:FontWeight.bold,fontSize:20),
)
],
),
),
flex:1,
)
],
Page 30
),
),
);
}
}
fooditem_detail.dart
import
'package:flutter/material.dart'
;import'/fooditem.dart';
StatelessWidget {finalStringfoodId;
@override
Widget build(BuildContext
context) {final_fooditem=
FoodItem.foodItems.firstWhere((element)=>element.id==
foodId);returnScaffold(
backgroundColor:
Page 31
Colors.grey.shade200,appBar:A
ppBar(
backgroundColor:
Colors.white,elevation:8,
foregroundColor:Colors.black,
),
body:
Column(c
hildren:[E
xpanded(
flex:2,
child:PageView.builder(
itemCount:_fooditem.images.length,
itemBuilder: (context,
index)
{returnContainer(
margin:constEdgeInsets.symmetric(horizontal:16),
child:Image.asset(
_fooditem.images[in
dex],fit:BoxFit.fitW
idth,
Page 32
),
);
},
),
),
const
SizedBox(h
eight:16,
),
Expanded(c
hild:Paddin
g(
padding:constEdgeInsets.symmetric(horiz
ontal:16),child:Column(
children
[Text(
_fooditem.descriptio
n,style:
constTextStyle(color:Colors.deepPurple,fontSize:18),
)
],
),
),
Page 33
flex:3,
)
],
),
);
}
}
fooditem.dart
classFoodItem
{final String
id;finalString
name;
finalList<String>im
ages;finaldoublepric
e;
finalStringdescription;
FoodItem({required this.name,
Page 34
required
this.price,requiredt
his.description,
});
staticList<FoodItem>foodIt
ems=[FoodItem(
name:
"Manchurian",id
:"101",
images:[
"assets/images/manchuria
n1.jpg","assets/images/ma
nchurian2.jpg","assets/im
ages/manchurian3.jpg"
],
price: 120,
Page 35
descripti
on:
"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
tempor incididunt utlabore et dolore magna aliqua. Ut enim ad minim veniam, quis
nostrud exercitation ullamco laboris nisi utaliquip ex ea commodo consequat. Duis
aute irure dolor in reprehenderit in voluptate velit esse cillumdolore eu fugiat nulla
pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui
officiadeseruntmollitanimidestlaborum.",
),
FoodItem(
name:
"Noodles",id:
"102",
images:["assets/images/no
odles1.jpg","assets/image
s/noodles2.jpg",
],
price:
100,desc
ription:
"Noodles are a type of food made from unleavened dough which is rolled flat
and cut, stretched orextruded, into long strips or strings. Noodles can be
refrigerated for short-term storage or dried and storedforfuture use.",
),
FoodItem(
name:
Page 36
"Icecream",id:
"103",
images:["assets/ima
ges/i1.jpg","assets/
images/i2.jpeg","a
ssets/images/i3.jpe
g",
"assets/images/i4.jpeg",
],
price:
100,desc
ription:
Page 37
"Ice cream is a sweetened frozen food typically eaten as a snack or dessert. It
may be made frommilk or cream and is flavoured with a sweetener, either sugar or
an alternative, and a spice, such as cocoaor vanilla, or with fruit such as
strawberries or peaches. It can also be made by whisking a flavored
creambaseandliquidnitrogentogether.",
),
];
}
home_page.dart
import
'package:flutter/material.dart'
;import'/food_item_widget.d
art';import'/fooditem.dart';
import'/fooditem_detail.dart';
StatelessWidget
{HomePage({Key?
key}):super(key:key);final
_foodItems =
FoodItem.foodItems;@override
Widgetbuild(BuildContextco
ntext){returnScaffold(
appBar:AppBar(
Page 38
title:constText("J_123_FoodDelivery"),
),
body:SizedBox(
// padding: const
EdgeInsets.symmetric(horizontal:
16),height:double.infinity,
width:
double.infinity,chi
ld:ListView.builde
r(
itemCount: _foodItems.length,padding:
const EdgeInsets.all(20),
itemBuilder: (context,
index)
{returnGestureDetector(
onTap:()
{Navigator.of(context).push(Material
PageRoute(builder:(context) {
returnFoodItemDetail(foodId:_foodItems[index].id);
},
));
},
Page 39
child:FoodItemWidget(
imagePath:_foodItems[index].i
mages[0],name:_foodItems[inde
x].name,
price:_foodItems[index].price),
);
},
),
),
);
}
}
Page 40
OUTPUT :-
Page 41
2). Dart program to find Factorial of a number
Recursivey.
Ans.:
Program:-
import 'dart:io';
int factorial(int num){
//base case of recursion.
if(num<=1) { // base case
return 1;
}
else{
return num*factorial(num-1); //function call itself.
}}
void main() {
var num;
stdout.write("Enter the Number :-\n");
num = int.parse(stdin.readLineSync()!);
print(num);
// Storing function call result in fact variable.
var fact = factorial(num);
print("Factorial is: ${fact}");
}
Page 42
Output:-
Page 43
3). DartProgram to findArmstrongNumber?
Ans.:-
Program:-
import 'dart:io';
import 'dart:math';
void main(){
int? num;
print('Enter A Number to check ARMSTRONG or NOT
ARMSTRONG NUMBER :-');
// user will enter a number to check
num = int.parse(stdin.readLineSync()!);
// user entered number is passed to function
isArmString(num);
}
//a function to check arm strong
void isArmString(int number){
//initial some variable
int temp,digits =0, last = 0, sum = 0;
//assign user entered number to temp variable
temp = number;
// loop execute until temp is 0 and increment digits by 1 each loop
Page 44
while(temp>0){
temp = temp~/10;
digits++;
temp = number;
while(temp>0){
temp = temp~/10;
// now if number and sum are equal its a arm strong number
if(number == sum){
}else{
Page 45
Output:-
Page 46
Assignment - 4
Ans. :-
main.dart
import 'package:S_128_college/login_page.dart';
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
debugShowCheckedModeBanner: false,
Page 47
theme: ThemeData(
primarySwatch: Colors.purple,
elevatedButtonTheme: ElevatedButtonThemeData(
style: ElevatedButton.styleFrom(
primary: Colors.deepPurple,
elevation: 8,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(25)),
),
),
appBarTheme: const AppBarTheme(
backgroundColor: Colors.deepPurple,
foregroundColor: Colors.white,
),
inputDecorationTheme: InputDecorationTheme(
enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(25),
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(25),
Page 48
borderSide: const BorderSide(color: Colors.white, width: 2)),
filled: true,
fillColor: Colors.white,
)),
home_page.dart
import 'package:flutter/material.dart';
@override
body: SizedBox(
width: double.infinity,
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
const SizedBox(
Page 49
height: 16,
),
ElevatedButton(
onPressed: () {
showSearch(
context: context, delegate: CustomSearchDelegate());
},
child: SizedBox(
width: 150,
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: const [
Text("Seach Subjects"),
SizedBox(
width: 20,
),
Icon(Icons.search),
],
),
))
],
),
),
);
}
}
Page 50
class CustomSearchDelegate extends SearchDelegate {
final List<String> _subjects = [
"Python",
"Java",
"Mobile Application Development",
"Vb.net",
"Information System",
"IOT"
];
@override
},
icon: const Icon(Icons.clear_sharp))
];
}
@override
Page 51
},
icon: const Icon(Icons.arrow_back));
}
@override
return ListView.builder(
itemCount: matchQuery.length,
itemBuilder: (context, index) {
var result = matchQuery[index];
return ListTile(
title: Text(result),
);
},
);
}
@override
Page 52
Widget buildSuggestions(BuildContext context) {
List<String> matchQuery = [];
);
},
);
}
}
login_page.dart
import 'package:j_123_college/registration_page.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'home_page.dart';
import 'text_input_card.dart';
Page 53
class LoginPage extends StatelessWidget {
const LoginPage({Key? key}) : super(key: key);
@override
return Scaffold(
backgroundColor: Colors.white,
body: SafeArea(
child: SingleChildScrollView(
child: Column(
children: [
SizedBox(
height: height * 0.5,
// color: Colors.black,
child: SvgPicture.asset("assets/svgs/reading.svg"),
),
const SizedBox(
height: 16,
),
Padding(
padding: const EdgeInsets.symmetric(horizontal: 16),
Page 54
child: Form(
child: Column(
children: [
TextInputCard(
child: TextFormField(
decoration: const InputDecoration(
labelText: "Username",
),
),
),
const SizedBox(
height: 10,
),
TextInputCard(
child: TextFormField(
decoration: const InputDecoration(
labelText: "Password",
),
)),
const SizedBox(
height: 10,
),
SizedBox(
width: width - 50,
height: 45,
child: ElevatedButton(
Page 55
onPressed: () {
Navigator.of(context).push(
MaterialPageRoute(
builder: (context) => const HomePage()),
);
},
child: const Text("Login"),
style: ElevatedButton.styleFrom(
// primary: Colors.white,
elevation: 8,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(25))),
),
),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
const Text("Don't have an account.?"),
TextButton(
onPressed: () {
Navigator.of(context).push(MaterialPageRoute(
builder: (context) => RegistrationPage(),
));
},
Page 56
child: const Text("Sign Up"))
],
)
],
)),
),
],
),
),
),
);
}
}
registration_page.dart
import 'home_page.dart';
import 'text_input_card.dart';
import 'package:flutter/material.dart';
@override
return Scaffold(
appBar: AppBar(
title: const Center(
child: Text('Registration'),
),
),
body: Container(
padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 12),
color: Colors.white,
height: _height,
width: _width,
child: SingleChildScrollView(
child: Form(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
TextInputCard(
child: TextFormField(
Page 58
controller: _fullName,
decoration: const InputDecoration(
label: Text('Fullname'),
),
),
),
SizedBox(
height: _height * 0.01,
),
TextInputCard(
child: TextFormField(
controller: _userName,
decoration: const InputDecoration(
label: Text('User Name'),
suffixIcon: Icon(Icons.person),
),
),
),
SizedBox(
height: _height * 0.01,
),
TextInputCard(
child: TextFormField(
Page 59
controller: _email,
keyboardType: TextInputType.emailAddress,
decoration: const InputDecoration(
label: Text('Email'), suffixIcon: Icon(Icons.email)),
),
),
SizedBox(
height: _height * 0.01,
),
TextInputCard(
child: TextFormField(
keyboardType: TextInputType.number,
controller: _mobile,
decoration: const InputDecoration(
label: Text('Mobile Number'),
suffixIcon: Icon(Icons.phone),
),
),
),
SizedBox(
height: _height * 0.01,
),
Page 60
TextInputCard(
child: TextFormField(
obscureText: true,
decoration: const InputDecoration(
),
SizedBox(
height: _height * 0.03,
),
SizedBox(
height: 45,
width: _width - 50,
child: ElevatedButton(
onPressed: () {
Navigator.of(context).push(
MaterialPageRoute(
builder: (context) => const HomePage()),
);
ScaffoldMessenger.of(context).showSnackBar(const SnackBar(
Page 61
),
],
),
),
),
),
);
text_input_card.dart
import 'package:flutter/material.dart';
class TextInputCard extends StatelessWidget {
final Widget child;
const TextInputCard({
Key? key,
required this.child,
}) : super(key: key);
@override
child: Card(
elevation: 8,
// color: Colors.purple,
shape: RoundedRectangleBorder(borderRadius:
BorderRadius.circular(25)),
child: child,
),
);
Page 63
OUTPUT :-
Page 64
Page 65