Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
379ac72
refactor: organize asset constants
Jul 10, 2024
255019f
fix: correct path typo from 'assets/image' to 'assets/images'
Jul 10, 2024
fed66e8
Add Firebase configuration and setup Android/iOS platforms
neminsheth Jul 12, 2024
c11c794
Working: TODO: Ensure Reset Password has Email verification
neminsheth Jul 12, 2024
7f2c166
Working: TODO: Ensure Reset Password has Email verification
neminsheth Jul 12, 2024
39ab12e
Merge pull request #1 from HardikSJain/main
anshumandas Jul 13, 2024
80a4999
interim commit for merging PRs
anshumandas Jul 13, 2024
688306c
Merge branch 'main' of https://github.com/anshumandas/get-flutter-fire
anshumandas Jul 13, 2024
038adb5
Fix null check error in ImagePickerButton and improve null handling i…
neminsheth Jul 13, 2024
50e9bdb
fix: bottom navigation current index
Jul 14, 2024
c1fedc4
fix: handled bottom nav index for path & query parameters
Jul 14, 2024
ad6278c
added image picker
Aas11223 Jul 15, 2024
4125c29
change readme
Aas11223 Jul 15, 2024
0d780ef
added check if the path mentioned is for bottom navigation
Jul 15, 2024
1180864
using full path for bottom navigation
Jul 17, 2024
b99f3fd
Added Search Bar (Toggle Button for phones) on Top Center with Title
Aas11223 Jul 19, 2024
134d8a4
Removed firebase.json
neminsheth Jul 19, 2024
47427f9
Merge branch 'main' into feature/reset-password-email-verification
neminsheth Jul 19, 2024
1dee2ce
fixed async bug
anshumandas Jul 20, 2024
4882d04
Merge pull request #3 from neminsheth/feature/reset-password-email-ve…
anshumandas Jul 20, 2024
8b3ecff
Merge pull request #6 from HardikSJain/bug-fix
anshumandas Jul 20, 2024
aa7f6fa
Merge pull request #13 from Aastha-Gadhvi/main
anshumandas Jul 20, 2024
170bedb
Revert "Bugs, ToDo 13.3"
anshumandas Jul 20, 2024
47dc1d1
Merge pull request #15 from anshumandas/revert-13-main
anshumandas Jul 20, 2024
a5a56a5
Revert "Feature/reset password email verification"
anshumandas Jul 20, 2024
626531f
Merge pull request #16 from anshumandas/revert-3-feature/reset-passwo…
anshumandas Jul 20, 2024
774a63c
Save changes before switching branches
Aas11223 Jul 20, 2024
bf3516a
Use GetX and little change in dasboard
Aas11223 Jul 20, 2024
4fcaeb7
Merge branch 'main' into main
Aas11223 Jul 20, 2024
c6937b2
added google oauth
Aas11223 Jul 26, 2024
8a840e6
solved conflicts
Aas11223 Jul 26, 2024
1d806e3
remove exposed Google API key and update configuration
Aas11223 Jul 27, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 20 additions & 5 deletions .metadata
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
# This file should be version controlled and should not be manually edited.

version:
revision: "a14f74ff3a1cbd521163c5f03d68113d50af93d3"
revision: "761747bfc538b5af34aa0d3fac380f1bc331ec49"
channel: "stable"

project_type: app
Expand All @@ -13,11 +13,26 @@ project_type: app
migration:
platforms:
- platform: root
create_revision: a14f74ff3a1cbd521163c5f03d68113d50af93d3
base_revision: a14f74ff3a1cbd521163c5f03d68113d50af93d3
create_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
base_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
- platform: android
create_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
base_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
- platform: ios
create_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
base_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
- platform: linux
create_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
base_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
- platform: macos
create_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
base_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
- platform: web
create_revision: a14f74ff3a1cbd521163c5f03d68113d50af93d3
base_revision: a14f74ff3a1cbd521163c5f03d68113d50af93d3
create_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
base_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
- platform: windows
create_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49
base_revision: 761747bfc538b5af34aa0d3fac380f1bc331ec49

# User provided section

Expand Down
13 changes: 13 additions & 0 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{

"version": "0.2.0",
"configurations": [
{
"type": "chrome",
"request": "launch",
"name": "Launch Chrome against localhost",
"url": "http://localhost:8080",
"webRoot": "${workspaceFolder}"
}
]
}
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ Step 13: TODO: Large vs Small screen responsiveness

* Drawer: Triggered by Top Left Icon (App Logo). For iOS this icon changes to back button when required. Contains allowed Role List, Screens specified as Drawer. Becomes Left Side Navigation for Horizontal Screens. Can have additional extreme left vertical Navigation Strip. Bottom Navigation Bar also folds into this strip in Horizontal Screens.
* Top Right Icon: used for Login and post Login triggers BottomSheet/Context Menu for Persona Change, Profile, Settings, Change Password, Logout
* Search Bar (Toggle Button for phones) on Top Center with Title
* Search Bar (Toggle Button for phones) on Top Center with Title (Done)
* Status Bottom Bar for desktops only instead of SnackBars
* FAB vs Main Menu

Expand Down
54 changes: 54 additions & 0 deletions android/app/src/google-services.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
{
"project_info": {
"project_number": "937033976489",
"project_id": "flutter-fire-new-fd42a",
"storage_bucket": "flutter-fire-new-fd42a.appspot.com"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:937033976489:android:19081cc9734a6951a9f7b8",
"android_client_info": {
"package_name": "com.example.app"
}
},
"oauth_client": [
{
"client_id": "937033976489-rrjd0cii6jeieqdua08ps3mlobclf33f.apps.googleusercontent.com",
"client_type": 1,
"android_info": {
"package_name": "com.example.app",
"certificate_hash": "b7cacc014aca914ebf5b4672c0eac82588cf959c"
}
},
{
"client_id": "937033976489-474q4ak930rivpbkfm0s3hgrj11vm2su.apps.googleusercontent.com",
"client_type": 3
}
],
"api_key": [
{
"current_key": "AIzaSyCxfUjkOdNdXgtvzz_Ynkm1gZwdqPJ9NMI"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": [
{
"client_id": "937033976489-474q4ak930rivpbkfm0s3hgrj11vm2su.apps.googleusercontent.com",
"client_type": 3
},
{
"client_id": "937033976489-1kgmdf63piaa45e9odgreejht522evtv.apps.googleusercontent.com",
"client_type": 2,
"ios_info": {
"bundle_id": "aas2.ex.com"
}
}
]
}
}
}
],
"configuration_version": "1"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package com.example.get_flutter_fire

import io.flutter.embedding.android.FlutterActivity

class MainActivity: FlutterActivity()
Empty file added git
Empty file.
14 changes: 14 additions & 0 deletions ios/Flutter/Generated.xcconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
// This is a generated file; do not edit or check into version control.
FLUTTER_ROOT=C:\Users\Aastha Gadhvi\Downloads\flutter_windows_3.10.5-stable\flutter
FLUTTER_APPLICATION_PATH=C:\Users\Aastha Gadhvi\get_flutter_fire
COCOAPODS_PARALLEL_CODE_SIGN=true
FLUTTER_TARGET=lib\main.dart
FLUTTER_BUILD_DIR=build
FLUTTER_BUILD_NAME=1.0.0
FLUTTER_BUILD_NUMBER=1
EXCLUDED_ARCHS[sdk=iphonesimulator*]=i386
EXCLUDED_ARCHS[sdk=iphoneos*]=armv7
DART_OBFUSCATION=false
TRACK_WIDGET_CREATION=true
TREE_SHAKE_ICONS=false
PACKAGE_CONFIG=.dart_tool/package_config.json
13 changes: 13 additions & 0 deletions ios/Flutter/flutter_export_environment.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#!/bin/sh
# This is a generated file; do not edit or check into version control.
export "FLUTTER_ROOT=C:\Users\Aastha Gadhvi\Downloads\flutter_windows_3.10.5-stable\flutter"
export "FLUTTER_APPLICATION_PATH=C:\Users\Aastha Gadhvi\get_flutter_fire"
export "COCOAPODS_PARALLEL_CODE_SIGN=true"
export "FLUTTER_TARGET=lib\main.dart"
export "FLUTTER_BUILD_DIR=build"
export "FLUTTER_BUILD_NAME=1.0.0"
export "FLUTTER_BUILD_NUMBER=1"
export "DART_OBFUSCATION=false"
export "TRACK_WIDGET_CREATION=true"
export "TREE_SHAKE_ICONS=false"
export "PACKAGE_CONFIG=.dart_tool/package_config.json"
36 changes: 36 additions & 0 deletions ios/Runner/GoogleService-Info.plist
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CLIENT_ID</key>
<string>937033976489-8jp2ag1pabd0uk5njhf7lesatma938o5.apps.googleusercontent.com</string>
<key>REVERSED_CLIENT_ID</key>
<string>com.googleusercontent.apps.937033976489-8jp2ag1pabd0uk5njhf7lesatma938o5</string>
<key>ANDROID_CLIENT_ID</key>
<string>937033976489-7qm78m6uqkssm7noigfiihlboil9ucdo.apps.googleusercontent.com</string>
<key>API_KEY</key>
<string>AIzaSyARgH5G93YG1tPD5dSqQkWfdspVw1jLjDU</string>
<key>GCM_SENDER_ID</key>
<string>937033976489</string>
<key>PLIST_VERSION</key>
<string>1</string>
<key>BUNDLE_ID</key>
<string>com.example.app</string>
<key>PROJECT_ID</key>
<string>flutter-fire-new-fd42a</string>
<key>STORAGE_BUCKET</key>
<string>flutter-fire-new-fd42a.appspot.com</string>
<key>IS_ADS_ENABLED</key>
<false></false>
<key>IS_ANALYTICS_ENABLED</key>
<false></false>
<key>IS_APPINVITE_ENABLED</key>
<true></true>
<key>IS_GCM_ENABLED</key>
<true></true>
<key>IS_SIGNIN_ENABLED</key>
<true></true>
<key>GOOGLE_APP_ID</key>
<string>1:937033976489:ios:842aae5c2946e409a9f7b8</string>
</dict>
</plist>
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import 'package:get/get.dart';

class DashboardController extends GetxController {
final now = DateTime.now().obs;
final isSearchBarVisible = true.obs;
@override
void onReady() {
super.onReady();
Expand All @@ -14,4 +15,8 @@ class DashboardController extends GetxController {
},
);
}

void toggleSearchBarVisibility() {
isSearchBarVisible.value = !isSearchBarVisible.value;
}
}
93 changes: 82 additions & 11 deletions lib/app/modules/dashboard/views/dashboard_view.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:get_flutter_fire/services/remote_config.dart';

import '../controllers/dashboard_controller.dart';

Expand All @@ -9,18 +10,88 @@ class DashboardView extends GetView<DashboardController> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Obx(
() => Column(
mainAxisSize: MainAxisSize.min,
children: [
const Text(
'DashboardView is working',
style: TextStyle(fontSize: 20),
),
Text('Time: ${controller.now.value.toString()}'),
],
appBar: AppBar(
title: const Text('Dashboard'),
centerTitle: true,
actions: [
GetBuilder<DashboardController>(
builder: (controller) {
return FutureBuilder<bool>(
future: RemoteConfig.instance.then((config) => config.showSearchBarOnTop()),
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return const Center(child: CircularProgressIndicator());
} else if (snapshot.hasError || !snapshot.data!) {
return const SizedBox.shrink();
} else {
return GetPlatform.isMobile
? IconButton(
icon: const Icon(Icons.search),
onPressed: () {
controller.toggleSearchBarVisibility();
},
)
: const SizedBox.shrink();
}
},
);
},
),
],
),
body: Obx(() {
// Use the controller's state for search bar visibility
bool isSearchBarVisible = controller.isSearchBarVisible.value;

return FutureBuilder<bool>(
future: RemoteConfig.instance.then((config) => config.showSearchBarOnTop()),
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return const Center(child: CircularProgressIndicator());
} else if (snapshot.hasError) {
return Center(child: Text('Error: ${snapshot.error}'));
} else {
return Column(
children: [
if (isSearchBarVisible)
Padding(
padding: const EdgeInsets.all(8.0),
child: _buildSearchBar(),
),
Expanded(
child: Center(
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
const Text(
'DashboardView is working',
style: TextStyle(fontSize: 20),
),
Text('Time: ${controller.now.value.toString()}'),
],
),
),
),
],
);
}
},
);
}),
);
}

Widget _buildSearchBar() {
return Container(
alignment: Alignment.center,
padding: const EdgeInsets.symmetric(horizontal: 16.0),
child: TextField(
decoration: InputDecoration(
hintText: 'Search...',
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(10.0),
),
prefixIcon: Icon(Icons.search),
),
),
);
Expand Down
2 changes: 1 addition & 1 deletion lib/app/modules/login/views/login_view.dart
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ class LoginView extends GetView<LoginController> {
? recaptcha()
: SignInScreen(
providers: [
GoogleProvider(clientId: DefaultFirebaseOptions.webClientId),
GoogleProvider(clientId: "937033976489-474q4ak930rivpbkfm0s3hgrj11vm2su.apps.googleusercontent.com"),
MyEmailAuthProvider(),
],
showAuthActionSwitch: !controller.isRegistered,
Expand Down
5 changes: 3 additions & 2 deletions lib/app/modules/profile/views/profile_view.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import 'package:get/get.dart';

import '../../../../services/auth_service.dart';
import '../../../../models/screens.dart';
import '../../../utils/img_constants.dart';
import '../../../widgets/change_password_dialog.dart';
import '../../../widgets/image_picker_button.dart';
import '../controllers/profile_controller.dart';
Expand Down Expand Up @@ -62,7 +63,7 @@ class ProfileView extends GetView<ProfileController> {
)
: Center(
child: Image.asset(
'assets/images/dash.png',
ImgConstants.dash,
width: size,
fit: BoxFit.contain,
),
Expand Down Expand Up @@ -121,4 +122,4 @@ class ProfileView extends GetView<ProfileController> {
textCancel: "Cancel",
onConfirm: dlg.onSubmit);
}
}
}
Loading