diff --git a/Ajmal VA/APK/app-release.apk b/Ajmal VA/APK/app-release.apk new file mode 100644 index 0000000..0253d43 Binary files /dev/null and b/Ajmal VA/APK/app-release.apk differ diff --git a/Ajmal VA/Code/assets/aju.jpg b/Ajmal VA/Code/assets/aju.jpg new file mode 100644 index 0000000..65c057c Binary files /dev/null and b/Ajmal VA/Code/assets/aju.jpg differ diff --git a/Ajmal VA/Code/lib/api/news.dart b/Ajmal VA/Code/lib/api/news.dart new file mode 100644 index 0000000..4baaac8 --- /dev/null +++ b/Ajmal VA/Code/lib/api/news.dart @@ -0,0 +1,18 @@ +import 'dart:convert'; + +import 'package:http/http.dart' as http; +import 'package:newzera/model/article_model.dart'; + +class News { + String url = + "https://newsapi.org/v2/top-headlines?country=in&apiKey=ec5d8feba97048dda8411c6ac78aead2"; + Future
getNews() async { + var response = await http.get(Uri.parse(url)); + if (response.statusCode == 200) { + // print(response.body); + return Article.fromJson(jsonDecode(response.body)); + } else { + throw Exception("API Call Failed!"); + } + } +} diff --git a/Ajmal VA/Code/lib/main.dart b/Ajmal VA/Code/lib/main.dart new file mode 100644 index 0000000..ed69f4a --- /dev/null +++ b/Ajmal VA/Code/lib/main.dart @@ -0,0 +1,25 @@ +import 'package:flutter/material.dart'; +import 'package:newzera/screen/aboutus.dart'; +import 'screen/config/themes/themes.dart'; +import 'screen/details/detail_news.dart'; +import 'screen/home/home_page.dart'; + +void main() { + runApp(MyApp()); +} + +class MyApp extends StatelessWidget { + @override + Widget build(BuildContext context) { + return MaterialApp( + title: 'News App', + theme: themes(), + debugShowCheckedModeBanner: false, + routes: { + DetailNews.routeName: (ctx) => DetailNews(), + AboutUS.routeName: (ctx) => AboutUS(), + }, + home: Homepage(), + ); + } +} diff --git a/Ajmal VA/Code/lib/model/article_model.dart b/Ajmal VA/Code/lib/model/article_model.dart new file mode 100644 index 0000000..3d47935 --- /dev/null +++ b/Ajmal VA/Code/lib/model/article_model.dart @@ -0,0 +1,91 @@ +class Article { + Article({ + required this.status, + required this.totalResults, + required this.articles, + }); + late final String status; + late final int totalResults; + late final List articles; + + Article.fromJson(Map json) { + status = json['status']; + totalResults = json['totalResults']; + articles = + List.from(json['articles']).map((e) => Articles.fromJson(e)).toList(); + } + + Map toJson() { + final _data = {}; + _data['status'] = status; + _data['totalResults'] = totalResults; + _data['articles'] = articles.map((e) => e.toJson()).toList(); + return _data; + } +} + +class Articles { + Articles({ + required this.source, + this.author, + required this.title, + this.description, + required this.url, + required this.urlToImage, + required this.publishedAt, + this.content, + }); + late final Source source; + late final String? author; + late final String? title; + late final String? description; + late final String? url; + late final String? urlToImage; + late final String? publishedAt; + late final String? content; + + Articles.fromJson(Map json) { + source = Source.fromJson(json['source']); + author = null; + title = json['title']; + description = json['description']; + url = json['url']; + urlToImage = json['urlToImage']; + publishedAt = json['publishedAt']; + content = null; + } + + Map toJson() { + final _data = {}; + _data['source'] = source.toJson(); + _data['author'] = author; + _data['title'] = title; + _data['description'] = description; + _data['url'] = url; + _data['urlToImage'] = urlToImage; + _data['publishedAt'] = publishedAt; + _data['content'] = content; + return _data; + } +} + +class Source { + Source({ + this.id, + required this.name, + }); + late final String? id; + late final String name; + + Source.fromJson(Map json) { + id = json['id']; + name = json['name']; + } + + Map toJson() { + final _data = {}; + _data['id'] = id; + _data['name'] = name; + return _data; + } +} diff --git a/Ajmal VA/Code/lib/screen/aboutus.dart b/Ajmal VA/Code/lib/screen/aboutus.dart new file mode 100644 index 0000000..5d4204f --- /dev/null +++ b/Ajmal VA/Code/lib/screen/aboutus.dart @@ -0,0 +1,216 @@ +import 'package:flutter/material.dart'; +import 'package:font_awesome_flutter/font_awesome_flutter.dart'; + +class AboutUS extends StatelessWidget { + static const routeName = 'AboutUS'; + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + leading: IconButton( + icon: const Icon(Icons.arrow_back_ios), + onPressed: () { + Navigator.of(context).pop(); + }, + color: Colors.white, + ), + actions: [ + Padding( + padding: EdgeInsets.only(right: 20.0), + child: GestureDetector( + onTap: () {}, + child: Icon( + Icons.share, + size: 26.0, + ), + )), + Padding( + padding: EdgeInsets.only(right: 20.0), + child: GestureDetector( + onTap: () {}, + child: Icon(Icons.more_vert), + )), + ], + elevation: 0, + backgroundColor: Colors.pink.shade500, + ), + body: Container( + height: 700, + width: double.infinity, + padding: EdgeInsets.all(10), + //color: Colors.green, + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [Colors.red, Colors.purple], + begin: Alignment.topRight, + end: Alignment.bottomLeft, + ), + ), + child: Column( + children: [ + SizedBox(height: 20), + const CircleAvatar( + //backgroundColor: Colors.brown, + //child: Text('Aju'), + backgroundImage: AssetImage('assets/aju.jpg'), + radius: 70, + ), + Spacer(), + const Align( + child: Text( + 'Ajmal VA', + style: TextStyle(fontSize: 30, color: Colors.white), + ), + alignment: Alignment.center, + ), + Spacer(), + const Align( + child: Text( + 'Your Awesome App Developer', + style: TextStyle(fontSize: 20, color: Colors.white), + ), + alignment: Alignment.center, + ), + const Spacer(), + const Divider( + color: Colors.white, + thickness: 3, + ), + const Spacer(), + Row( + children: const [ + Text( + 'Email', + style: TextStyle(fontSize: 20, color: Colors.white), + ), + Spacer(), + Text( + 'ajmal.va@gmail.com', + style: TextStyle(fontSize: 20, color: Colors.white), + ), + ], + ), + Spacer(), + Divider( + color: Colors.white, + thickness: 3, + ), + Spacer(), + Row( + children: const [ + Text( + 'Phone', + style: TextStyle(fontSize: 20, color: Colors.white), + ), + Spacer(), + Text( + '+91 1234567890', + style: TextStyle(fontSize: 20, color: Colors.white), + ), + ], + ), + Spacer(), + Divider( + color: Colors.white, + thickness: 3, + ), + Spacer(), + Row( + children: const [ + Text( + 'Date of Birth', + style: TextStyle(fontSize: 20, color: Colors.white), + ), + Spacer(), + Text( + '18/12/2000', + style: TextStyle(fontSize: 20, color: Colors.white), + ), + ], + ), + Spacer(), + Divider( + color: Colors.white, + thickness: 3, + ), + Spacer(), + Row( + children: const [ + Text( + 'address', + style: TextStyle(fontSize: 20, color: Colors.white), + ), + Spacer(), + Text( + 'IJK,Thrissur', + style: TextStyle(fontSize: 20, color: Colors.white), + ), + ], + ), + Spacer(), + Divider( + color: Colors.white, + thickness: 3, + ), + Row( + children: [ + Padding( + padding: EdgeInsets.all(8.0), + child: IconButton( + icon: FaIcon(FontAwesomeIcons.facebookSquare, + size: 30, color: Colors.white), + onPressed: () { + print("Facebook/Ajmalva"); + }), + ), + Spacer(), + Padding( + padding: EdgeInsets.all(8.0), + child: IconButton( + icon: FaIcon(FontAwesomeIcons.github, + size: 30, color: Colors.white), + onPressed: () { + print("github.com/Ajmalva"); + }), + ), + Spacer(), + Padding( + padding: EdgeInsets.all(8.0), + child: IconButton( + icon: FaIcon(FontAwesomeIcons.instagram, + size: 30, color: Colors.white), + onPressed: () { + print("Ajmal VA"); + }), + ), + Spacer(), + Padding( + padding: EdgeInsets.all(8.0), + child: IconButton( + icon: FaIcon(FontAwesomeIcons.linkedin, + size: 30, color: Colors.white), + onPressed: () { + print("Ajmal VA"); + }), + ), + Spacer(), + Padding( + padding: EdgeInsets.all(8.0), + child: IconButton( + icon: FaIcon(FontAwesomeIcons.reddit, + size: 30, color: Colors.white), + onPressed: () { + print("Ajmal VA"); + }), + ), + Spacer(), + ], + ), + Spacer(), + ], + ), + ), + ); + } +} diff --git a/Ajmal VA/Code/lib/screen/config/themes/themes.dart b/Ajmal VA/Code/lib/screen/config/themes/themes.dart new file mode 100644 index 0000000..a112a33 --- /dev/null +++ b/Ajmal VA/Code/lib/screen/config/themes/themes.dart @@ -0,0 +1,17 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/painting.dart'; + +ThemeData themes() { + return ThemeData( + primarySwatch: Colors.blue, + textTheme: const TextTheme( + bodyText1: TextStyle(color: Colors.black45), + ), + primaryTextTheme: TextTheme( + headline3: + TextStyle(color: Colors.indigo.shade900, fontWeight: FontWeight.w600), + headline5: TextStyle(color: Colors.indigo.shade900), + bodyText1: TextStyle(color: Colors.indigo.shade900), + ), + ); +} diff --git a/Ajmal VA/Code/lib/screen/config/var/var.dart b/Ajmal VA/Code/lib/screen/config/var/var.dart new file mode 100644 index 0000000..5484731 --- /dev/null +++ b/Ajmal VA/Code/lib/screen/config/var/var.dart @@ -0,0 +1,5 @@ +const String profileimage = + 'https://images.unsplash.com/photo-1632570695117-633536e178ff?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=387&q=80'; + +const String webimg = + 'https://images.unsplash.com/photo-1593642531955-b62e17bdaa9c?ixid=MnwxMjA3fDF8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=1169&q=80'; diff --git a/Ajmal VA/Code/lib/screen/details/detail_news.dart b/Ajmal VA/Code/lib/screen/details/detail_news.dart new file mode 100644 index 0000000..0fd1541 --- /dev/null +++ b/Ajmal VA/Code/lib/screen/details/detail_news.dart @@ -0,0 +1,57 @@ +import 'package:flutter/material.dart'; +import 'package:newzera/screen/home/main_bar.dart'; + +class DetailNews extends StatelessWidget { + static const routeName = 'DetailNews'; + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + backgroundColor: Colors.white, + elevation: 0, + actions: [ + Padding( + padding: const EdgeInsets.all(8.0), + child: Icon( + Icons.share, + color: Colors.black, + ), + ), + ], + leading: IconButton( + onPressed: () { + Navigator.of(context).pop(); + }, + icon: Icon( + Icons.arrow_back_ios, + color: Colors.black, + ), + ), + ), + body: SafeArea( + child: SingleChildScrollView( + child: Padding( + padding: const EdgeInsets.symmetric(vertical: 10, horizontal: 20), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Mainbar(), + SizedBox( + height: 10, + ), + Text( + 'Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.'), + SizedBox( + height: 10, + ), + Text( + 'Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.'), + ], + ), + ), + ), + ), + ); + } +} diff --git a/Ajmal VA/Code/lib/screen/home/catagories.dart b/Ajmal VA/Code/lib/screen/home/catagories.dart new file mode 100644 index 0000000..f9cc485 --- /dev/null +++ b/Ajmal VA/Code/lib/screen/home/catagories.dart @@ -0,0 +1,51 @@ +import 'package:flutter/material.dart'; + +class Catagories extends StatelessWidget { + @override + Widget build(BuildContext context) { + return Container( + height: 50, + child: ListView( + scrollDirection: Axis.horizontal, + children: [ + Padding( + padding: const EdgeInsets.all(8.0), + child: Text('All'), + ), + Padding( + padding: const EdgeInsets.all(8.0), + child: Text('Sports'), + ), + Padding( + padding: const EdgeInsets.all(8.0), + child: Text('Crypto'), + ), + Padding( + padding: const EdgeInsets.all(8.0), + child: Text('Tech'), + ), + Padding( + padding: const EdgeInsets.all(8.0), + child: Text('Music'), + ), + Padding( + padding: const EdgeInsets.all(8.0), + child: Text('Art'), + ), + Padding( + padding: const EdgeInsets.all(8.0), + child: Text('Politics'), + ), + Padding( + padding: const EdgeInsets.all(8.0), + child: Text('Stocks'), + ), + Padding( + padding: const EdgeInsets.all(8.0), + child: Text('Health'), + ), + ], + ), + ); + } +} diff --git a/Ajmal VA/Code/lib/screen/home/custom_appbar.dart b/Ajmal VA/Code/lib/screen/home/custom_appbar.dart new file mode 100644 index 0000000..d831ad9 --- /dev/null +++ b/Ajmal VA/Code/lib/screen/home/custom_appbar.dart @@ -0,0 +1,41 @@ +import 'package:flutter/material.dart'; +import '../aboutus.dart'; +import '../config/var/var.dart' as configvar; + +class CustomAppBar extends StatelessWidget { + @override + Widget build(BuildContext context) { + return Padding( + padding: const EdgeInsets.symmetric(vertical: 10, horizontal: 8), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + children: [ + GestureDetector( + onTap: () { + Navigator.of(context).pushNamed(AboutUS.routeName); + }, + child: const CircleAvatar( + radius: 24, + backgroundImage: AssetImage('assets/aju.jpg'), + ), + ), + const SizedBox( + width: 10, + ), + Text( + '23 Sept, 2021', + style: Theme.of(context).textTheme.bodyText1, + ), + ], + ), + Icon( + Icons.search, + size: 30, + ), + ], + ), + ); + } +} diff --git a/Ajmal VA/Code/lib/screen/home/custom_tile.dart b/Ajmal VA/Code/lib/screen/home/custom_tile.dart new file mode 100644 index 0000000..4fefc2a --- /dev/null +++ b/Ajmal VA/Code/lib/screen/home/custom_tile.dart @@ -0,0 +1,129 @@ +import 'package:flutter/material.dart'; +import '..//config/var/var.dart' as configvar; + +class Customtile extends StatefulWidget { + const Customtile({ + Key? key, + required this.screenWidth, + required this.title, + required this.description, + required this.url, + required this.urlToImage, + }) : super(key: key); + + final double screenWidth; + //final String author; + final String title; + final String description; + final String url; + final String urlToImage; + + @override + State createState() => _CustomtileState(); +} + +class _CustomtileState extends State { + @override + Widget build(BuildContext context) { + return Container( + padding: const EdgeInsets.symmetric( + vertical: 8, + ), + child: Column( + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(20), + child: Image.network(widget.urlToImage), + ), + ListTile( + title: Text(widget.title), + subtitle: Text(widget.description), + ), + ], + ), + + // child: Row( + // children: [ + // Container( + // height: 70, + // width: 90, + // child: ClipRRect( + // borderRadius: BorderRadius.circular(8), + // child: Image.network( + // configvar.webimg, + // fit: BoxFit.cover, + // ), + // ), + // ), + // const SizedBox( + // width: 10, + // ), + // Column( + // crossAxisAlignment: CrossAxisAlignment.start, + // children: [ + // Container( + // width: screenWidth * 0.6, + // child: Text( + // "This is a little way to create a flutter news app", + // style: Theme.of(context) + // .primaryTextTheme + // .bodyText1! + // .merge(const TextStyle( + // fontWeight: FontWeight.w700, + // )), + // ), + // ), + // const SizedBox( + // height: 12, + // ), + // Container( + // child: Row( + // mainAxisAlignment: MainAxisAlignment.spaceBetween, + // children: [ + // IconText( + // iconData: Icons.calendar_today, + // title: 'Jan 12, 2021', + // ), + // SizedBox( + // width: 20, + // ), + // IconText( + // iconData: Icons.lock_clock, + // title: '10 min Read', + // ), + // ], + // ), + // ) + // ], + // ) + // ], + // ), + ); + } +} + +// class IconText extends StatelessWidget { +// final IconData iconData; +// final String title; + +// IconText({required this.iconData, required this.title}); + +// @override +// Widget build(BuildContext context) { +// return Row( +// children: [ +// Icon( +// iconData, +// size: 15, +// ), +// const SizedBox( +// width: 5, +// ), +// Text( +// title, +// style: Theme.of(context).textTheme.bodyText1, +// ), +// ], +// ); +// } +// } diff --git a/Ajmal VA/Code/lib/screen/home/home_page.dart b/Ajmal VA/Code/lib/screen/home/home_page.dart new file mode 100644 index 0000000..8151e3f --- /dev/null +++ b/Ajmal VA/Code/lib/screen/home/home_page.dart @@ -0,0 +1,28 @@ +import 'package:flutter/material.dart'; +import 'package:newzera/screen/home/main_bar.dart'; +import 'catagories.dart'; +import 'picbox.dart'; +import 'custom_appbar.dart'; +import 'recient_news.dart'; + +class Homepage extends StatelessWidget { + @override + Widget build(BuildContext context) { + final screenWidth = MediaQuery.of(context).size.width; + return Scaffold( + body: SafeArea( + child: SingleChildScrollView( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + CustomAppBar(), + PicBox(), + //Mainbar(), + Catagories(), + RecentNews(screenWidth: screenWidth), + ], + ), + )), + ); + } +} diff --git a/Ajmal VA/Code/lib/screen/home/main_bar.dart b/Ajmal VA/Code/lib/screen/home/main_bar.dart new file mode 100644 index 0000000..4c43f24 --- /dev/null +++ b/Ajmal VA/Code/lib/screen/home/main_bar.dart @@ -0,0 +1,56 @@ +import 'package:flutter/material.dart'; +import '..//config/var/var.dart' as configvar; + +class Mainbar extends StatelessWidget { + @override + Widget build(BuildContext context) { + final screenWidth = MediaQuery.of(context).size.width; + return Column( + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(20), + child: Image.network(configvar.webimg), + ), + const SizedBox( + height: 10, + ), + Container( + width: screenWidth * 0.8, + padding: const EdgeInsets.only(left: 8), + child: Text( + 'Should We Go for online or conventional way of finding news?', + style: Theme.of(context).primaryTextTheme.headline5, + maxLines: 3, + ), + ), + const SizedBox( + height: 15, + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + children: [ + const CircleAvatar( + radius: 24, + backgroundImage: NetworkImage(configvar.profileimage), + ), + const SizedBox( + width: 10, + ), + Text( + 'Ajmal VA', + style: Theme.of(context).textTheme.bodyText1, + ), + ], + ), + Text( + '23 Sept, 2021', + style: Theme.of(context).textTheme.bodyText1, + ), + ], + ), + ], + ); + } +} diff --git a/Ajmal VA/Code/lib/screen/home/picbox.dart b/Ajmal VA/Code/lib/screen/home/picbox.dart new file mode 100644 index 0000000..6c84d9a --- /dev/null +++ b/Ajmal VA/Code/lib/screen/home/picbox.dart @@ -0,0 +1,31 @@ +import 'package:flutter/material.dart'; +import 'package:newzera/screen/details/detail_news.dart'; +import '..//config/var/var.dart' as configvar; +import 'main_bar.dart'; + +class PicBox extends StatelessWidget { + @override + Widget build(BuildContext context) { + return Padding( + padding: const EdgeInsets.symmetric(vertical: 10, horizontal: 20), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'Breaking News', + style: Theme.of(context).primaryTextTheme.headline3, + ), + const SizedBox( + height: 10, + ), + GestureDetector( + onTap: () { + Navigator.of(context).pushNamed(DetailNews.routeName); + }, + child: Mainbar(), + ), + ], + ), + ); + } +} diff --git a/Ajmal VA/Code/lib/screen/home/recient_news.dart b/Ajmal VA/Code/lib/screen/home/recient_news.dart new file mode 100644 index 0000000..35b5197 --- /dev/null +++ b/Ajmal VA/Code/lib/screen/home/recient_news.dart @@ -0,0 +1,43 @@ +import 'package:flutter/material.dart'; +import 'package:newzera/api/news.dart'; +import 'package:newzera/model/article_model.dart'; +import 'custom_tile.dart'; + +class RecentNews extends StatelessWidget { + const RecentNews({ + Key? key, + required this.screenWidth, + }) : super(key: key); + + final double screenWidth; + + @override + Widget build(BuildContext context) { + return FutureBuilder
( + future: News().getNews(), + builder: (context, snapshot) { + if (snapshot.hasData) { + return ListView.builder( + shrinkWrap: true, + physics: NeverScrollableScrollPhysics(), + itemCount: snapshot.data!.articles.length, + itemBuilder: (BuildContext context, int index) { + var data = snapshot.data!.articles[index]; + return Customtile( + screenWidth: screenWidth, + title: data.title ?? "", + description: data.description ?? "", + url: data.url ?? "", + urlToImage: data.urlToImage ?? + "https://complianz.io/wp-content/uploads/2019/03/placeholder-300x202.jpg", + ); + }, + ); + } else if (snapshot.hasError) { + return Text(snapshot.error.toString()); + } else { + return CircularProgressIndicator(); + } + }); + } +} diff --git a/Ajmal VA/Code/pubspec.yaml b/Ajmal VA/Code/pubspec.yaml new file mode 100644 index 0000000..ae6e6b7 --- /dev/null +++ b/Ajmal VA/Code/pubspec.yaml @@ -0,0 +1,91 @@ +name: newzera +description: A new Flutter project. + +# The following line prevents the package from being accidentally published to +# pub.dev using `flutter pub publish`. This is preferred for private packages. +publish_to: 'none' # Remove this line if you wish to publish to pub.dev + +# The following defines the version and build number for your application. +# A version number is three numbers separated by dots, like 1.2.43 +# followed by an optional build number separated by a +. +# Both the version and the builder number may be overridden in flutter +# build by specifying --build-name and --build-number, respectively. +# In Android, build-name is used as versionName while build-number used as versionCode. +# Read more about Android versioning at https://developer.android.com/studio/publish/versioning +# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. +# Read more about iOS versioning at +# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html +version: 1.0.0+1 + +environment: + sdk: ">=2.12.0 <3.0.0" + +# Dependencies specify other packages that your package needs in order to work. +# To automatically upgrade your package dependencies to the latest versions +# consider running `flutter pub upgrade --major-versions`. Alternatively, +# dependencies can be manually updated by changing the version numbers below to +# the latest version available on pub.dev. To see which dependencies have newer +# versions available, run `flutter pub outdated`. +dependencies: + flutter: + sdk: flutter + font_awesome_flutter: ^9.1.0 + http: ^0.13.4 + + + # The following adds the Cupertino Icons font to your application. + # Use with the CupertinoIcons class for iOS style icons. + cupertino_icons: ^1.0.2 + +dev_dependencies: + flutter_test: + sdk: flutter + + # The "flutter_lints" package below contains a set of recommended lints to + # encourage good coding practices. The lint set provided by the package is + # activated in the `analysis_options.yaml` file located at the root of your + # package. See that file for information about deactivating specific lint + # rules and activating additional ones. + flutter_lints: ^1.0.0 + +# For information on the generic Dart part of this file, see the +# following page: https://dart.dev/tools/pub/pubspec + +# The following section is specific to Flutter. +flutter: + + # The following line ensures that the Material Icons font is + # included with your application, so that you can use the icons in + # the material Icons class. + uses-material-design: true + + # To add assets to your application, add an assets section, like this: + assets: + - assets/ + # - images/a_dot_ham.jpeg + + # An image asset can refer to one or more resolution-specific "variants", see + # https://flutter.dev/assets-and-images/#resolution-aware. + + # For details regarding adding assets from package dependencies, see + # https://flutter.dev/assets-and-images/#from-packages + + # To add custom fonts to your application, add a fonts section here, + # in this "flutter" section. Each entry in this list should have a + # "family" key with the font family name, and a "fonts" key with a + # list giving the asset and other descriptors for the font. For + # example: + # fonts: + # - family: Schyler + # fonts: + # - asset: fonts/Schyler-Regular.ttf + # - asset: fonts/Schyler-Italic.ttf + # style: italic + # - family: Trajan Pro + # fonts: + # - asset: fonts/TrajanPro.ttf + # - asset: fonts/TrajanPro_Bold.ttf + # weight: 700 + # + # For details regarding fonts from package dependencies, + # see https://flutter.dev/custom-fonts/#from-packages diff --git a/Ajmal VA/README.md b/Ajmal VA/README.md new file mode 100644 index 0000000..9268d07 --- /dev/null +++ b/Ajmal VA/README.md @@ -0,0 +1,16 @@ +# newzera + +A new Flutter project. + +## ScreenShot +# homepage/News +![Whatsapp-Automation](https://i.imgur.com/0aOmLXK.png?width=336&height=644) +This is the main homepage. + +# Profile +![Whatsapp-Automation](https://i.imgur.com/3QkLJaF.png?width=336&height=644) +Profile page from previous task, can be accessed by clicking on the circular profile pic in the appbar in homepage. + +## Getting Started + +This project is a starting point for a Flutter application. diff --git a/Ajmal VA/Screenshot/Screenshot_1639926219.png b/Ajmal VA/Screenshot/Screenshot_1639926219.png new file mode 100644 index 0000000..c1a8e24 Binary files /dev/null and b/Ajmal VA/Screenshot/Screenshot_1639926219.png differ diff --git a/Ajmal VA/Screenshot/Screenshot_1639926227.png b/Ajmal VA/Screenshot/Screenshot_1639926227.png new file mode 100644 index 0000000..f3eb0b4 Binary files /dev/null and b/Ajmal VA/Screenshot/Screenshot_1639926227.png differ