rodydavis / Gmail_clone
Licence: mit
A Gmail Clone built with Flutter
Stars: ✭ 691
Programming Languages
dart
5743 projects
Projects that are alternatives of or similar to Gmail clone
Pagodo
pagodo (Passive Google Dork) - Automate Google Hacking Database scraping and searching
Stars: ✭ 603 (-12.74%)
Mutual labels: google
Apps Script Starter
Setup a local development environment inside Visual Studio Code and build Google Workspace add-ons with Google Apps Script
Stars: ✭ 611 (-11.58%)
Mutual labels: gmail
Sou
简单搜索,一个简单的前端界面。用惯了各种导航首页,满屏幕尽是各种不厌其烦的广告和资讯;尝试自己写个自己的主页。
Stars: ✭ 628 (-9.12%)
Mutual labels: google
Pydis
A redis clone in Python 3 to disprove some falsehoods about performance.
Stars: ✭ 623 (-9.84%)
Mutual labels: clone
Search Deflector
A small program that forwards searches from Cortana to your preferred browser and search engine.
Stars: ✭ 620 (-10.27%)
Mutual labels: google
Leku
🌍 Map location picker component for Android. Based on Google Maps. An alternative to Google Place Picker.
Stars: ✭ 612 (-11.43%)
Mutual labels: google
Versaplayer
Versatile Video Player implementation for iOS, macOS, and tvOS
Stars: ✭ 608 (-12.01%)
Mutual labels: google
Cloudcomparer
Compare the various managed cloud services offered by the major public cloud providers in the market.
Stars: ✭ 678 (-1.88%)
Mutual labels: google
Playstoredownloader
A command line tool to download Android applications directly from the Google Play Store by specifying their package name (an initial one-time configuration is required)
Stars: ✭ 664 (-3.91%)
Mutual labels: google
Machine Learning Book
《机器学习宝典》包含:谷歌机器学习速成课程(招式)+机器学习术语表(口诀)+机器学习规则(心得)+机器学习中的常识性问题 (内功)。该资源适用于机器学习、深度学习研究人员和爱好者参考!
Stars: ✭ 616 (-10.85%)
Mutual labels: google
gmail_clone
A new Flutter application to showcase how to build Gmail with Flutter.
Video Tutorial: YouTube
Screenshots
Example
import 'package:floating_search_bar/floating_search_bar.dart';
import 'package:flutter/material.dart';
import 'package:gmail_clone/ui/app/app.dart';
import 'package:responsive_scaffold/responsive_scaffold.dart';
import 'package:responsive_scaffold/utils/breakpoint.dart';
import '../data/classes/email.dart';
import '../data/dummy_data.dart';
import 'common/common.dart';
class HomeScreen extends StatefulWidget {
@override
_HomeScreenState createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
List<EmailItem> _emails;
@override
void initState() {
_emails = emails;
super.initState();
}
final Size _tabletBreakpoint = Size(510.0, 510.0);
@override
Widget build(BuildContext context) {
final bool _tablet = isTablet(context, breakpoint: _tabletBreakpoint);
return ResponsiveScaffold.builder(
tabletBreakpoint: _tabletBreakpoint,
detailBuilder: (BuildContext context, int index) {
final i = _emails[index];
return DetailsScreen(
appBar: AppBar(
elevation: 0.0,
actions: [
IconButton(
icon: Icon(Icons.archive),
onPressed: () {},
),
IconButton(
icon: Icon(Icons.delete_outline),
onPressed: () {
setState(() {
_emails.removeAt(index);
});
},
),
IconButton(
icon: Icon(Icons.mail_outline),
onPressed: () {},
),
IconButton(
icon: Icon(Icons.more_horiz),
onPressed: () {},
),
],
),
body: EmailView(
item: i,
favoriteChanged: () {
setState(() {
i.favorite = !i.favorite;
});
},
),
);
},
drawer: AppDrawer(),
tabletSideMenu: _tablet
? Flexible(
flex: 1,
child: AppSideMenu(),
)
: null,
tabletFlexListView: 4,
slivers: <Widget>[
SliverFloatingBar(
floating: true,
automaticallyImplyLeading: !_tablet,
title: TextField(
decoration: InputDecoration.collapsed(hintText: "Search mail"),
),
trailing: CircleAvatar(
child: Text("RD"),
),
),
SliverToBoxAdapter(
child: Container(
padding: EdgeInsets.all(12.0),
child: Text("All Inboxes"),
),
),
],
itemCount: _emails?.length ?? 0,
itemBuilder: (BuildContext context, int index) {
final i = _emails[index];
final bool _lastItem = (index + 1) == emails?.length ?? 0;
if (_lastItem) {
return Container(
padding: EdgeInsets.only(bottom: 70.0),
child: EmailListTile(
item: i,
favoriteChanged: () {
setState(() {
i.favorite = !i.favorite;
});
},
),
);
}
return EmailListTile(
item: i,
favoriteChanged: () {
setState(() {
i.favorite = !i.favorite;
});
},
);
},
floatingActionButton: EmailFAB(),
);
}
}
Note that the project description data, including the texts, logos, images, and/or trademarks,
for each open source project belongs to its rightful owner.
If you wish to add or remove any projects, please contact us at [email protected].