Skip to content

Commit

Permalink
include global data
Browse files Browse the repository at this point in the history
  • Loading branch information
HPatel000 committed Jun 18, 2020
1 parent 40b9dd2 commit 02f365d
Show file tree
Hide file tree
Showing 11 changed files with 280 additions and 51 deletions.
18 changes: 10 additions & 8 deletions lib/data/data_search.dart
Original file line number Diff line number Diff line change
Expand Up @@ -50,10 +50,10 @@ class DataSearch extends SearchDelegate<String> {
ReusableFunction().getDistrictList(query, districtData);
return SingleStateScreen(
state: statewise[i]['state'],
active: statewise[i]['active'],
confirmed: statewise[i]['confirmed'],
deaths: statewise[i]['deaths'],
recovered: statewise[i]['recovered'],
active: double.tryParse(statewise[i]['active'].toString()),
confirmed: double.tryParse(statewise[i]['confirmed'].toString()),
deaths: double.tryParse(statewise[i]['deaths']),
recovered: double.tryParse(statewise[i]['recovered']),
districtList: districtList,
);
} else {
Expand Down Expand Up @@ -89,10 +89,12 @@ class DataSearch extends SearchDelegate<String> {
builder: (context) {
return SingleStateScreen(
state: statewise[i]['state'],
active: statewise[i]['active'],
confirmed: statewise[i]['confirmed'],
deaths: statewise[i]['deaths'],
recovered: statewise[i]['recovered'],
active: double.tryParse(
statewise[i]['active'].toString()),
confirmed: double.tryParse(
statewise[i]['confirmed'].toString()),
deaths: double.tryParse(statewise[i]['deaths']),
recovered: double.tryParse(statewise[i]['recovered']),
districtList: districtList,
);
},
Expand Down
24 changes: 24 additions & 0 deletions lib/data/global_info.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import 'package:covid19updates/services/networking.dart';

class GlobalInfo {
double gActive;
double gConfirmed;
double gDeaths;
double gRecovered;
List countriesData;

Future getGlobalInfo() async {
var data = await NetworkHelper().getGlobalData();
updateData(data);
}

void updateData(data) {
this.gConfirmed =
double.tryParse((data['Global']['TotalConfirmed']).toString());
gDeaths = double.tryParse((data['Global']['TotalDeaths']).toString());
gRecovered = double.tryParse((data['Global']['TotalRecovered']).toString());
gActive = gConfirmed - gRecovered - gDeaths;
countriesData = data['Countries'];
}
}
//Countries
62 changes: 62 additions & 0 deletions lib/data/global_page.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
import 'package:covid19updates/data/global_info.dart';
import 'package:covid19updates/screens/global_screen.dart';
import 'package:flutter/material.dart';
import 'package:connectivity/connectivity.dart';
import 'package:provider/provider.dart';
import '../screens/show_msg.dart';

class GlobalPage extends StatefulWidget {
@override
_GlobalPageState createState() => _GlobalPageState();
}

class _GlobalPageState extends State<GlobalPage> {
Future _start;
bool isConnected;
GlobalInfo _info = GlobalInfo();
_getData() async {
return await _info.getGlobalInfo();
}

Future<Null> checkConnection() async {
var connection = await Connectivity().checkConnectivity();
if (connection == ConnectivityResult.mobile ||
connection == ConnectivityResult.wifi) {
isConnected = true;
} else {
isConnected = false;
}
}

@override
void initState() {
super.initState();
_start = _getData();
checkConnection();
}

@override
Widget build(BuildContext context) {
return Provider(
create: (context) => _info,
child: Scaffold(
backgroundColor: Color(0xff1b1b2f),
body: FutureBuilder(
future: _start,
builder: (context, snapshot) {
switch (snapshot.connectionState) {
case ConnectionState.active:
case ConnectionState.waiting:
return ShowLoading();
case ConnectionState.done:
return isConnected ? GlobalScreen() : ShowConnectionError();
case ConnectionState.none:
default:
return ShowError();
}
},
),
),
);
}
}
2 changes: 1 addition & 1 deletion lib/screens/credits_screen.dart
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ class LinkTile extends StatelessWidget {
Widget build(BuildContext context) {
return Container(
padding: EdgeInsets.symmetric(horizontal: 20.0, vertical: 15.0),
margin: EdgeInsets.symmetric(vertical: 5.0, horizontal: 15.0),
margin: EdgeInsets.symmetric(vertical: 10.0, horizontal: 15.0),
decoration: BoxDecoration(
color: Color(0xff1f4068),
borderRadius: BorderRadius.all(Radius.circular(50.0)),
Expand Down
45 changes: 45 additions & 0 deletions lib/screens/global_screen.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
import 'package:covid19updates/data/global_info.dart';
import 'package:covid19updates/widgets/coutries_stream.dart';
import 'package:covid19updates/widgets/curved_top.dart';
import 'package:covid19updates/widgets/data_cards.dart';
import 'package:covid19updates/widgets/top_title.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';

class GlobalScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
final GlobalInfo _info = Provider.of<GlobalInfo>(context);
return CustomScrollView(
slivers: <Widget>[
SliverAppBar(
elevation: 0.0,
floating: true,
expandedHeight: 100,
title: Text('Covid-19 Updates',
style: TextStyle(fontSize: 20, color: Colors.white)),
flexibleSpace: FlexibleSpaceBar(
background: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
TopTitle(
title: 'Global',
),
],
),
),
),
CurvedTop(),
SliverToBoxAdapter(
child: DataCards(
confirmed: _info.gConfirmed,
active: _info.gActive,
recovered: _info.gRecovered,
deaths: _info.gDeaths,
),
),
CountriesStream(),
],
);
}
}
123 changes: 93 additions & 30 deletions lib/screens/nation_screen.dart
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import 'package:covid19updates/data/global_page.dart';
import 'package:covid19updates/screens/credits_screen.dart';
import 'package:covid19updates/screens/prevention_screen.dart';
import 'package:covid19updates/widgets/curved_top.dart';
Expand All @@ -22,11 +23,20 @@ class NationScreen extends StatelessWidget {
floating: true,
expandedHeight: 100,
leading: IconButton(
icon: FaIcon(FontAwesomeIcons.staylinked,
color: Color(0xffffffff), size: 25.0),
padding: EdgeInsets.only(right: 15.0),
icon: Icon(
Icons.search,
color: Colors.white,
size: 30.0,
),
onPressed: () {
Navigator.push(context,
MaterialPageRoute(builder: (context) => CreditsScreen()));
showSearch(
context: context,
delegate: DataSearch(
statewise: _appStart.statewise,
districtData: _appStart.districtData,
),
);
},
),
title: Text('Covid-19 Updates',
Expand All @@ -39,20 +49,13 @@ class NationScreen extends StatelessWidget {
title: 'India',
),
IconButton(
padding: EdgeInsets.only(right: 15.0),
icon: Icon(
Icons.search,
color: Colors.white,
size: 30.0,
),
icon: FaIcon(FontAwesomeIcons.staylinked,
color: Color(0xffffffff), size: 25.0),
onPressed: () {
showSearch(
context: context,
delegate: DataSearch(
statewise: _appStart.statewise,
districtData: _appStart.districtData,
),
);
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => CreditsScreen()));
},
),
],
Expand Down Expand Up @@ -81,20 +84,80 @@ class NationScreen extends StatelessWidget {
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Text(
'Spread Awareness',
style: TextStyle(
color: Colors.white,
fontSize: 25.0,
),
Row(
children: <Widget>[
Column(
children: <Widget>[
Text(
'Spread',
style: TextStyle(
color: Colors.white,
fontSize: 25.0,
),
),
Text(
' Awareness',
style: TextStyle(
color: Colors.white,
fontSize: 25.0,
),
),
],
),
SizedBox(width: 20.0),
Hero(
tag: 'heartbeat',
child: FaIcon(
FontAwesomeIcons.heartbeat,
color: Color(0xffe43f5a),
size: 30.0,
),
),
],
),
Icon(
Icons.navigate_next,
color: Colors.white,
size: 40.0,
),
Hero(
tag: 'heartbeat',
child: FaIcon(
FontAwesomeIcons.heartbeat,
color: Color(0xffe43f5a),
size: 30.0,
),
],
),
),
),
),
SliverToBoxAdapter(
child: GestureDetector(
onTap: () {
Navigator.push(context,
MaterialPageRoute(builder: (context) => GlobalPage()));
},
child: Container(
margin: EdgeInsets.symmetric(horizontal: 15.0, vertical: 10.0),
padding: EdgeInsets.all(15.0),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10.0),
color: Color(0xff162447),
// borderRadius: BorderRadius.all(Radius.circular(15.0)),
),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Row(
children: <Widget>[
Text(
'Global Data',
style: TextStyle(
color: Colors.white,
fontSize: 25.0,
),
),
SizedBox(width: 20.0),
FaIcon(
FontAwesomeIcons.globe,
color: Color(0xffe43f5a),
size: 30.0,
),
],
),
Icon(
Icons.navigate_next,
Expand Down
2 changes: 1 addition & 1 deletion lib/screens/prevention_screen.dart
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ class InfoCard extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
margin: EdgeInsets.symmetric(vertical: 5.0, horizontal: 15.0),
margin: EdgeInsets.symmetric(vertical: 15.0, horizontal: 15.0),
padding: EdgeInsets.all(10),
decoration: BoxDecoration(
color: Color(0xff1f4868),
Expand Down
4 changes: 4 additions & 0 deletions lib/services/networking.dart
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,8 @@ class NetworkHelper {
Future getDistrictData() {
return getData('https://api.covid19india.org/v2/state_district_wise.json');
}

Future getGlobalData() {
return getData('https://api.covid19api.com/summary');
}
}
32 changes: 32 additions & 0 deletions lib/widgets/coutries_stream.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:covid19updates/widgets/list_tile_data.dart';
import 'package:covid19updates/data/global_info.dart';

class CountriesStream extends StatelessWidget {
@override
Widget build(BuildContext context) {
final GlobalInfo _info = Provider.of<GlobalInfo>(context);
return SliverList(
delegate: SliverChildBuilderDelegate(
(_, index) {
final oneCountry = _info.countriesData[index];
var country = oneCountry['Country'];
var confirmed =
double.tryParse((oneCountry['TotalConfirmed']).toString());
var deaths = double.tryParse((oneCountry['TotalDeaths']).toString());
var recovered =
double.tryParse((oneCountry['TotalRecovered']).toString());
return ListTileData(
name: country,
active: confirmed - deaths - recovered,
confirmed: confirmed,
deaths: deaths,
recovered: recovered,
);
},
childCount: _info.countriesData.length,
),
);
}
}
Loading

0 comments on commit 02f365d

Please sign in to comment.