implement pushNotification

This commit is contained in:
Jonatas Antunes Messias 2024-06-17 14:12:24 -03:00
parent 32cb8d7ab2
commit b18f87c5f1
20 changed files with 683 additions and 300 deletions

File diff suppressed because one or more lines are too long

View File

@ -2,8 +2,6 @@ plugins {
id "com.android.application"
id "kotlin-android"
id "dev.flutter.flutter-gradle-plugin"
}
def localProperties = new Properties()
@ -32,7 +30,6 @@ if (keystorePropertiesFile.exists()) {
android {
compileSdkVersion 34
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
@ -44,7 +41,6 @@ android {
}
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "com.freaccess.hub"
minSdkVersion 21
targetSdkVersion 34
@ -52,19 +48,17 @@ android {
versionName flutterVersionName
}
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
storePassword keystoreProperties['storePassword']
}
}
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
storePassword keystoreProperties['storePassword']
}
}
buildTypes {
release {
// TODO: Add your own signing config for the release build.
// Signing with the debug keys for now, so `flutter run --release` works.
signingConfig signingConfigs.debug
}
}
@ -76,4 +70,8 @@ flutter {
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.7.10"
implementation 'com.android.support:multidex:1.0.3' // Se necessário, adicione suporte ao multidex
// Adicione outras dependências do seu aplicativo aqui
}
apply plugin: 'com.google.gms.google-services'

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
<resources>
<string name="app_name">FREHub</string>
<string name="default_notification_channel_id">Miscellaneous</string>
</resources>

View File

@ -4,4 +4,10 @@
to allow setting breakpoints, to provide hot reload, etc.
-->
<uses-permission android:name="android.permission.INTERNET"/>
<meta-data
android:name="com.google.firebase.messaging.default_notification_icon"
android:resource="@drawable/notification_icon" />
<meta-data
android:name="com.google.firebase.messaging.default_notification_channel_id"
android:value="@string/default_notification_channel_id"/>
</manifest>

View File

@ -1,18 +1,31 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
google()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:7.0.2' // Use a versão do Gradle que corresponde à sua configuração
classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.10' // Kotlin Gradle plugin
classpath 'com.google.gms:google-services:4.4.2' // Google Services plugin
// Certifique-se de adicionar outras dependências do classpath aqui, se necessário.
}
}
allprojects {
repositories {
google()
mavenCentral()
// Adicione outros repositórios aqui, se necessário.
}
}
rootProject.buildDir = '../build'
subprojects {
project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
project.evaluationDependsOn(':app')
}
tasks.register("clean", Delete) {
delete rootProject.buildDir
}
}

View File

@ -1,6 +1,6 @@
#Fri Jun 23 08:50:38 CEST 2017
#Sat Jun 15 18:23:23 BRT 2024
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip

View File

@ -19,6 +19,9 @@ pluginManagement {
plugins {
id "dev.flutter.flutter-plugin-loader" version "1.0.0"
id "com.android.application" version "7.3.0" apply false
// START: FlutterFire Configuration
id "com.google.gms.google-services" version "4.3.15" apply false
// END: FlutterFire Configuration
id "org.jetbrains.kotlin.android" version "1.7.10" apply false

1
firebase.json Normal file
View File

@ -0,0 +1 @@
{"flutter":{"platforms":{"android":{"default":{"projectId":"accessmoblie-da839","appId":"1:187064172787:android:61a667c543bf7c5a763786","fileOutput":"android/app/google-services.json"}},"dart":{"lib/firebase_options.dart":{"projectId":"accessmoblie-da839","configurations":{"android":"1:187064172787:android:61a667c543bf7c5a763786","ios":"1:187064172787:ios:4549dabf48c69ddc763786","web":"1:187064172787:web:0a990f85eca1f18c763786"}}}}}}

View File

@ -1,3 +1,5 @@
import 'package:firebase_messaging/firebase_messaging.dart';
import '/backend/api_requests/api_calls.dart';
import '/components/molecular_components/throw_exception/throw_exception_widget.dart';
import '/flutter_flow/flutter_flow_theme.dart';
@ -95,8 +97,7 @@ Future singInActionApp(
FFAppState().passwd = password!;
}),
]);
if ((FFAppState().email != '') &&
(FFAppState().passwd != '')) {
if ((FFAppState().email != '') && (FFAppState().passwd != '')) {
devUUID = await actions.getDevUUID();
FFAppState().devUUID = devUUID!;
loginCall = await PhpGroup.loginCall.call(
@ -119,9 +120,24 @@ Future singInActionApp(
FFAppState().userUUID = PhpGroup.loginCall.userUUID(
(loginCall.jsonBody ?? ''),
)!;
FFAppState().token = PhpGroup.loginCall.userDeviceId(
(loginCall.jsonBody ?? ''),
)!;
// FFAppState().token = await FirebaseMessaging.instance.getToken();
ApiCallResponse? updToken;
String? deviceToken = await FirebaseMessaging.instance.getToken();
FFAppState().token = deviceToken!;
updToken = await PhpGroup.updToken.call(
token: FFAppState().token,
devid: FFAppState().devUUID,
useruuid: FFAppState().userUUID,
);
if (PhpGroup.updToken.error(
(loginCall.jsonBody ?? ''),
) ==
false) {
debugPrint('Token atualizado com sucesso');
debugPrint("Device Token: $deviceToken");
} else {
debugPrint('Erro ao atualizar token');
}
FFAppState().createdAt = dateTimeFormat(
'd/M/y H:mm:ss',
getCurrentTimestamp,

View File

@ -15,6 +15,7 @@ class PhpGroup {
static String getBaseUrl() => 'https://freaccess.com.br/freaccess';
static Map<String, String> headers = {};
static LoginCall loginCall = LoginCall();
static UpdToken updToken = UpdToken();
static RegisterCall registerCall = RegisterCall();
static ForgotPasswordCall forgotPasswordCall = ForgotPasswordCall();
static GetLocalsCall getLocalsCall = GetLocalsCall();
@ -33,6 +34,41 @@ class PhpGroup {
static GetPessoasLocalCall getPessoasLocalCall = GetPessoasLocalCall();
}
class UpdToken {
Future<ApiCallResponse> call({
String? token = '',
String? devid = '',
String? useruuid = '',
}) async {
final baseUrl = PhpGroup.getBaseUrl();
return ApiManager.instance.makeApiCall(
callName: 'updToken',
apiUrl: '$baseUrl/updtoken.php',
callType: ApiCallType.POST,
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
params: {
'token': token,
'devid': devid,
'useruuid': useruuid,
},
bodyType: BodyType.X_WWW_FORM_URL_ENCODED,
returnBody: true,
encodeBodyUtf8: false,
decodeUtf8: false,
cache: false,
alwaysAllowBody: false,
);
}
bool? error(dynamic response) => castToType<bool>(getJsonField(
response,
r'''$.error''',
));
}
class LoginCall {
Future<ApiCallResponse> call({
String? email = '',

View File

@ -0,0 +1,109 @@
import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:flutter/material.dart';
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
import 'dart:convert';
import 'dart:io' show Platform;
class PushNotificationService {
final FirebaseMessaging _firebaseMessaging = FirebaseMessaging.instance;
final FlutterLocalNotificationsPlugin _flutterLocalNotificationsPlugin =
FlutterLocalNotificationsPlugin();
static const String _channelId = 'visitRequest';
static const String _channelName = 'Visitas';
static const String _channelDescription = 'Solicitação de visita';
Future<void> initialize() async {
var initializationSettingsAndroid =
const AndroidInitializationSettings('ic_launcher');
var initializationSettingsIOS = const DarwinInitializationSettings(
requestAlertPermission: true,
requestBadgePermission: true,
requestSoundPermission: true,
);
var initializationSettings = InitializationSettings(
android: initializationSettingsAndroid,
iOS: initializationSettingsIOS,
);
await _flutterLocalNotificationsPlugin.initialize(initializationSettings);
if (Platform.isAndroid) {
var channel = const AndroidNotificationChannel(
_channelId,
_channelName,
description: _channelDescription,
importance: Importance.high,
);
await _flutterLocalNotificationsPlugin
.resolvePlatformSpecificImplementation<
AndroidFlutterLocalNotificationsPlugin>()
?.createNotificationChannel(channel);
}
await Firebase.initializeApp();
FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);
FirebaseMessaging.onMessage.listen(_handleMessage);
FirebaseMessaging.onMessageOpenedApp.listen(_handleMessage);
NotificationSettings settings = await _firebaseMessaging.requestPermission(
alert: true,
badge: true,
sound: true,
);
debugPrint('User granted permission: ${settings.authorizationStatus}');
}
void _handleMessage(RemoteMessage message) {
RemoteNotification? notification = message.notification;
AndroidNotification? android = message.notification?.android;
Map<String, dynamic> data = message.data;
// Verifica se um clickAction e se é um visit_request
String? clickAction = data['clickAction'];
if (clickAction != null && clickAction == "visit_request") {
// Implementa a lógica específica para visit_request
// Por exemplo, exibir uma notificação específica para visit_request
if (notification != null && android != null) {
var androidPlatformChannelSpecifics = const AndroidNotificationDetails(
_channelId,
_channelName,
channelDescription: "Descrição específica para visit_request",
importance: Importance.max,
priority: Priority.high,
);
var platformChannelSpecifics = NotificationDetails(
android: androidPlatformChannelSpecifics,
);
_flutterLocalNotificationsPlugin.show(
notification.hashCode,
"Título específico para visit_request",
"Corpo específico para visit_request",
platformChannelSpecifics,
payload:
"Dados adicionais que podem ser usados ao tocar na notificação",
);
}
} else if (notification != null && android != null) {
// Trata outras notificações como normalmente
var androidPlatformChannelSpecifics = const AndroidNotificationDetails(
_channelId,
_channelName,
channelDescription: _channelDescription,
importance: Importance.max,
priority: Priority.high,
);
var platformChannelSpecifics = NotificationDetails(
android: androidPlatformChannelSpecifics,
);
_flutterLocalNotificationsPlugin.show(
notification.hashCode,
notification.title,
notification.body,
platformChannelSpecifics,
);
}
}
Future<void> _firebaseMessagingBackgroundHandler(
RemoteMessage message) async {
await Firebase.initializeApp();
print("Handling a background message: ${message.messageId}");
}
}

View File

@ -150,7 +150,8 @@ class _BottomArrowLinkedLocalsComponentWidgetState
width: 50.0,
height: double.infinity,
decoration: const BoxDecoration(),
alignment: const AlignmentDirectional(0.0, 0.0),
alignment:
const AlignmentDirectional(0.0, 0.0),
child: Column(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment:
@ -162,7 +163,8 @@ class _BottomArrowLinkedLocalsComponentWidgetState
decoration: BoxDecoration(
color: FlutterFlowTheme.of(context)
.primaryText,
borderRadius: const BorderRadius.only(
borderRadius:
const BorderRadius.only(
bottomLeft: Radius.circular(25.0),
bottomRight:
Radius.circular(25.0),
@ -177,7 +179,8 @@ class _BottomArrowLinkedLocalsComponentWidgetState
),
),
child: ClipRRect(
borderRadius: const BorderRadius.only(
borderRadius:
const BorderRadius.only(
bottomLeft: Radius.circular(25.0),
bottomRight:
Radius.circular(25.0),
@ -192,14 +195,14 @@ class _BottomArrowLinkedLocalsComponentWidgetState
width: double.infinity,
height: double.infinity,
fit: BoxFit.fill,
alignment: const Alignment(0.0, 0.0),
alignment:
const Alignment(0.0, 0.0),
),
),
),
Padding(
padding:
const EdgeInsetsDirectional.fromSTEB(
0.0, 10.0, 0.0, 0.0),
padding: const EdgeInsetsDirectional
.fromSTEB(0.0, 10.0, 0.0, 0.0),
child: Text(
getJsonField(
eachLocalsItem,

80
lib/firebase_options.dart Normal file
View File

@ -0,0 +1,80 @@
// File generated by FlutterFire CLI.
// ignore_for_file: type=lint
import 'package:firebase_core/firebase_core.dart' show FirebaseOptions;
import 'package:flutter/foundation.dart'
show defaultTargetPlatform, kIsWeb, TargetPlatform;
/// Default [FirebaseOptions] for use with your Firebase apps.
///
/// Example:
/// ```dart
/// import 'firebase_options.dart';
/// // ...
/// await Firebase.initializeApp(
/// options: DefaultFirebaseOptions.currentPlatform,
/// );
/// ```
class DefaultFirebaseOptions {
static FirebaseOptions get currentPlatform {
if (kIsWeb) {
return web;
}
switch (defaultTargetPlatform) {
case TargetPlatform.android:
return android;
case TargetPlatform.iOS:
return ios;
case TargetPlatform.macOS:
throw UnsupportedError(
'DefaultFirebaseOptions have not been configured for macos - '
'you can reconfigure this by running the FlutterFire CLI again.',
);
case TargetPlatform.windows:
throw UnsupportedError(
'DefaultFirebaseOptions have not been configured for windows - '
'you can reconfigure this by running the FlutterFire CLI again.',
);
case TargetPlatform.linux:
throw UnsupportedError(
'DefaultFirebaseOptions have not been configured for linux - '
'you can reconfigure this by running the FlutterFire CLI again.',
);
default:
throw UnsupportedError(
'DefaultFirebaseOptions are not supported for this platform.',
);
}
}
static const FirebaseOptions web = FirebaseOptions(
apiKey: 'AIzaSyAG_jgXGKmMEMa4EH2ovnscAFuJTAxFPM4',
appId: '1:187064172787:web:0a990f85eca1f18c763786',
messagingSenderId: '187064172787',
projectId: 'accessmoblie-da839',
authDomain: 'accessmoblie-da839.firebaseapp.com',
databaseURL: 'https://accessmoblie-da839.firebaseio.com',
storageBucket: 'accessmoblie-da839.appspot.com',
measurementId: 'G-L4BQGX2WLZ',
);
static const FirebaseOptions android = FirebaseOptions(
apiKey: 'AIzaSyDbedj_giLOra4RwdWhBoRx6t8AJ-fnkg8',
appId: '1:187064172787:android:61a667c543bf7c5a763786',
messagingSenderId: '187064172787',
projectId: 'accessmoblie-da839',
databaseURL: 'https://accessmoblie-da839.firebaseio.com',
storageBucket: 'accessmoblie-da839.appspot.com',
);
static const FirebaseOptions ios = FirebaseOptions(
apiKey: 'AIzaSyCQIy2S4mK1YHmiYBpx-c393IPzVya11h4',
appId: '1:187064172787:ios:4549dabf48c69ddc763786',
messagingSenderId: '187064172787',
projectId: 'accessmoblie-da839',
databaseURL: 'https://accessmoblie-da839.firebaseio.com',
storageBucket: 'accessmoblie-da839.appspot.com',
androidClientId: '187064172787-7et0qu5p2qtmisvqgndn3kfi1b7u9ifl.apps.googleusercontent.com',
iosClientId: '187064172787-a5bnujphtc5dfh4vo5butlm1fhfkj7hn.apps.googleusercontent.com',
iosBundleId: 'com.freaccess.hub',
);
}

View File

@ -44,20 +44,30 @@ GoRouter createRouter(AppStateNotifier appStateNotifier) => GoRouter(
)
: const OnBoardingPageWidget(),
routes: [
// FFRoute(
// name: '_initialize',
// path: '/',
// builder: (context, _) => appStateNotifier.showSplashImage
// ? Builder(
// builder: (context) => Container(
// color: FlutterFlowTheme.of(context).primary,
// child: Image.asset(
// 'assets/images/favicon.png',
// fit: BoxFit.cover,
// ),
// ),
// )
// : const OnBoardingPageWidget(),
// ),
FFRoute(
name: '_initialize',
path: '/',
builder: (context, _) => appStateNotifier.showSplashImage
? Builder(
builder: (context) => Container(
color: FlutterFlowTheme.of(context).primary,
child: Image.asset(
'assets/images/logo.svg',
fit: BoxFit.cover,
),
),
)
: const OnBoardingPageWidget(),
path: '/onBoardingPage',
builder: (context, params) => LoginPageWidget(
device: params.getParam(
'device',
ParamType.String,
),
),
),
FFRoute(
name: 'LoginPage',

View File

@ -1,3 +1,5 @@
import 'package:firebase_messaging/firebase_messaging.dart';
import '/backend/api_requests/api_calls.dart';
import '/components/molecular_components/throw_exception/throw_exception_widget.dart';
import '/flutter_flow/flutter_flow_util.dart';
@ -51,8 +53,7 @@ class LoginPageModel extends FlutterFlowModel<LoginPageWidget> {
FFAppState().passwd = passwd!;
}),
]);
if ((FFAppState().email != '') &&
(FFAppState().passwd != '')) {
if ((FFAppState().email != '') && (FFAppState().passwd != '')) {
devUUID = await actions.getDevUUID();
FFAppState().devUUID = devUUID!;
loginCall = await PhpGroup.loginCall.call(
@ -68,7 +69,6 @@ class LoginPageModel extends FlutterFlowModel<LoginPageWidget> {
) ==
false) {
FFAppState().isLogged = true;
context.goNamed(
'homePage',
extra: <String, dynamic>{
@ -79,6 +79,13 @@ class LoginPageModel extends FlutterFlowModel<LoginPageWidget> {
},
);
} else {
// ApiCallResponse? updToken;
// updToken = await PhpGroup.updToken.call(
// devToken: await FirebaseMessaging.instance.getToken(),
// devUUID: FFAppState().devUUID,
// userUUID: FFAppState().userUUID,
// );
await showModalBottomSheet(
isScrollControlled: true,
backgroundColor: Colors.transparent,

View File

@ -1,34 +1,90 @@
import 'package:f_r_e_hub/backend/api_requests/api_calls.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
import 'package:provider/provider.dart';
import 'package:flutter/material.dart';
import 'firebase_options.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:flutter_web_plugins/url_strategy.dart';
import 'flutter_flow/flutter_flow_theme.dart';
import 'flutter_flow/flutter_flow_util.dart';
import 'flutter_flow/internationalization.dart';
import 'package:firebase_analytics/firebase_analytics.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform);
FirebaseAnalytics analyticsInstance = FirebaseAnalytics.instance;
analyticsInstance.logEvent(
name: 'test_event',
parameters: <String, Object>{
'string': 'test',
'int': 42,
'long': 12345678910,
'double': 42.0,
'boolAsString': true.toString(),
},
);
FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);
var initializationSettingsAndroid =
const AndroidInitializationSettings('mipmap/ic_launcher');
var initializationSettingsIOS = const DarwinInitializationSettings(
requestAlertPermission: true,
requestBadgePermission: true,
requestSoundPermission: true,
);
var initializationSettings = InitializationSettings(
android: initializationSettingsAndroid, iOS: initializationSettingsIOS);
await _flutterLocalNotificationsPlugin.initialize(initializationSettings);
FirebaseMessaging.onMessage.listen((RemoteMessage message) {
RemoteNotification? notification = message.notification;
AndroidNotification? android = message.notification?.android;
if (notification != null && android != null) {
_flutterLocalNotificationsPlugin.show(
notification.hashCode,
notification.title,
notification.body,
const NotificationDetails(
android: AndroidNotificationDetails(
'visitRequest',
'Visitas',
channelDescription: 'Solicitação de visita',
importance: Importance.max,
priority: Priority.high,
icon: 'mipmap/ic_launcher',
),
),
);
}
});
GoRouter.optionURLReflectsImperativeAPIs = true;
usePathUrlStrategy();
await FlutterFlowTheme.initialize();
await FFLocalizations.initialize();
final appState = FFAppState(); // Initialize FFAppState
final appState = FFAppState();
await appState.initializePersistedState();
runApp(ChangeNotifierProvider(
create: (context) => appState,
child: const MyApp(),
));
}
// Inicialização do plugin de notificações locais
FlutterLocalNotificationsPlugin _flutterLocalNotificationsPlugin =
FlutterLocalNotificationsPlugin();
// Manipulador de mensagens em segundo plano
Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
// Certifique-se de inicializar o Firebase dentro do manipulador
await Firebase.initializeApp();
print("Handling a background message: ${message.messageId}");
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
// This widget is the root of your application.
@override
State<MyApp> createState() => _MyAppState();
@ -38,21 +94,16 @@ class MyApp extends StatefulWidget {
class _MyAppState extends State<MyApp> {
Locale? _locale = FFLocalizations.getStoredLocale();
ThemeMode _themeMode = FlutterFlowTheme.themeMode;
late AppStateNotifier _appStateNotifier;
late GoRouter _router;
bool displaySplashImage = true;
@override
void initState() {
super.initState();
_appStateNotifier = AppStateNotifier.instance;
_router = createRouter(_appStateNotifier);
Future.delayed(const Duration(milliseconds: 1000),
() => setState(() => _appStateNotifier.stopShowingSplashImage()));
}
@ -62,10 +113,12 @@ class _MyAppState extends State<MyApp> {
FFLocalizations.storeLocale(language);
}
void setThemeMode(ThemeMode mode) => setState(() {
_themeMode = mode;
FlutterFlowTheme.saveThemeMode(mode);
});
void setThemeMode(ThemeMode mode) {
setState(() {
_themeMode = mode;
FlutterFlowTheme.saveThemeMode(mode);
});
}
@override
Widget build(BuildContext context) {
@ -85,15 +138,9 @@ class _MyAppState extends State<MyApp> {
theme: ThemeData(
brightness: Brightness.light,
scrollbarTheme: ScrollbarThemeData(
thumbVisibility: MaterialStateProperty.all(false),
thumbVisibility: WidgetStateProperty.all(false),
interactive: false,
thumbColor: MaterialStateProperty.resolveWith((states) {
if (states.contains(MaterialState.dragged)) {
return const Color(0xff1aab5f);
}
if (states.contains(MaterialState.hovered)) {
return const Color(0xff1aab5f);
}
thumbColor: WidgetStateProperty.resolveWith((states) {
return const Color(0xff1aab5f);
}),
),
@ -101,15 +148,9 @@ class _MyAppState extends State<MyApp> {
darkTheme: ThemeData(
brightness: Brightness.dark,
scrollbarTheme: ScrollbarThemeData(
thumbVisibility: MaterialStateProperty.all(false),
thumbVisibility: WidgetStateProperty.all(false),
interactive: false,
thumbColor: MaterialStateProperty.resolveWith((states) {
if (states.contains(MaterialState.dragged)) {
return const Color(0xff1aab5f);
}
if (states.contains(MaterialState.hovered)) {
return const Color(0xff1aab5f);
}
thumbColor: WidgetStateProperty.resolveWith((states) {
return const Color(0xff1aab5f);
}),
),

View File

@ -1,3 +1,6 @@
import 'package:f_r_e_hub/backend/push_notification/pushNotification.dart';
import 'package:firebase_messaging/firebase_messaging.dart';
import '/components/organism_components/bottom_arrow_linked_locals_component/bottom_arrow_linked_locals_component_widget.dart';
import '/components/organism_components/local_profile_component/local_profile_component_widget.dart';
import '/components/organism_components/menu_component/menu_component_widget.dart';
@ -211,8 +214,8 @@ class _HomePageWidgetState extends State<HomePageWidget> {
),
),
Padding(
padding:
const EdgeInsetsDirectional.fromSTEB(0.0, 10.0, 0.0, 0.0),
padding: const EdgeInsetsDirectional.fromSTEB(
0.0, 10.0, 0.0, 0.0),
child: Row(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.start,
@ -358,8 +361,9 @@ class _HomePageWidgetState extends State<HomePageWidget> {
),
Expanded(
child: Padding(
padding: const EdgeInsetsDirectional
.fromSTEB(
padding:
const EdgeInsetsDirectional
.fromSTEB(
10.0, 0.0, 0.0, 0.0),
child: Text(
FFLocalizations.of(context)
@ -434,8 +438,9 @@ class _HomePageWidgetState extends State<HomePageWidget> {
),
Expanded(
child: Padding(
padding: const EdgeInsetsDirectional
.fromSTEB(
padding:
const EdgeInsetsDirectional
.fromSTEB(
10.0, 0.0, 0.0, 0.0),
child: Text(
FFLocalizations.of(context)
@ -510,8 +515,9 @@ class _HomePageWidgetState extends State<HomePageWidget> {
),
Expanded(
child: Padding(
padding: const EdgeInsetsDirectional
.fromSTEB(
padding:
const EdgeInsetsDirectional
.fromSTEB(
10.0, 0.0, 0.0, 0.0),
child: Text(
FFLocalizations.of(context)
@ -586,8 +592,9 @@ class _HomePageWidgetState extends State<HomePageWidget> {
),
Expanded(
child: Padding(
padding: const EdgeInsetsDirectional
.fromSTEB(
padding:
const EdgeInsetsDirectional
.fromSTEB(
10.0, 0.0, 0.0, 0.0),
child: Text(
FFLocalizations.of(context)
@ -662,8 +669,9 @@ class _HomePageWidgetState extends State<HomePageWidget> {
),
Expanded(
child: Padding(
padding: const EdgeInsetsDirectional
.fromSTEB(
padding:
const EdgeInsetsDirectional
.fromSTEB(
10.0, 0.0, 0.0, 0.0),
child: Text(
FFLocalizations.of(context)
@ -738,8 +746,9 @@ class _HomePageWidgetState extends State<HomePageWidget> {
),
Expanded(
child: Padding(
padding: const EdgeInsetsDirectional
.fromSTEB(
padding:
const EdgeInsetsDirectional
.fromSTEB(
10.0, 0.0, 0.0, 0.0),
child: Text(
FFLocalizations.of(context)
@ -814,8 +823,9 @@ class _HomePageWidgetState extends State<HomePageWidget> {
),
Expanded(
child: Padding(
padding: const EdgeInsetsDirectional
.fromSTEB(
padding:
const EdgeInsetsDirectional
.fromSTEB(
10.0, 0.0, 0.0, 0.0),
child: Text(
FFLocalizations.of(context)
@ -887,10 +897,10 @@ class _HomePageWidgetState extends State<HomePageWidget> {
),
options: FFButtonOptions(
height: 40.0,
padding:
const EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 0.0),
iconPadding:
const EdgeInsetsDirectional.fromSTEB(0.0, 0.0, 0.0, 0.0),
padding: const EdgeInsetsDirectional.fromSTEB(
0.0, 0.0, 0.0, 0.0),
iconPadding: const EdgeInsetsDirectional.fromSTEB(
0.0, 0.0, 0.0, 0.0),
color: const Color(0x00D70000),
textStyle:
FlutterFlowTheme.of(context).labelMedium.override(
@ -948,21 +958,25 @@ class _HomePageWidgetState extends State<HomePageWidget> {
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Align(
alignment: const AlignmentDirectional(0.0, 1.0),
alignment:
const AlignmentDirectional(0.0, 1.0),
child: Container(
height: 50.0,
decoration: const BoxDecoration(),
child: Align(
alignment: const AlignmentDirectional(0.0, 0.0),
alignment:
const AlignmentDirectional(0.0, 0.0),
child: Row(
mainAxisSize: MainAxisSize.max,
children: [
Align(
alignment:
const AlignmentDirectional(-1.0, 0.0),
const AlignmentDirectional(
-1.0, 0.0),
child: Padding(
padding: const EdgeInsetsDirectional
.fromSTEB(
padding:
const EdgeInsetsDirectional
.fromSTEB(
10.0, 0.0, 0.0, 0.0),
child: FlutterFlowIconButton(
borderRadius: 20.0,
@ -985,10 +999,12 @@ class _HomePageWidgetState extends State<HomePageWidget> {
),
Align(
alignment:
const AlignmentDirectional(-1.0, 0.0),
const AlignmentDirectional(
-1.0, 0.0),
child: Padding(
padding: const EdgeInsetsDirectional
.fromSTEB(
padding:
const EdgeInsetsDirectional
.fromSTEB(
60.0, 15.0, 0.0, 0.0),
child: ClipRRect(
borderRadius:
@ -1004,10 +1020,12 @@ class _HomePageWidgetState extends State<HomePageWidget> {
),
Align(
alignment:
const AlignmentDirectional(0.0, 0.0),
const AlignmentDirectional(
0.0, 0.0),
child: Padding(
padding: const EdgeInsetsDirectional
.fromSTEB(
padding:
const EdgeInsetsDirectional
.fromSTEB(
0.0, 15.0, 0.0, 0.0),
child: Text(
FFLocalizations.of(context)
@ -1042,13 +1060,15 @@ class _HomePageWidgetState extends State<HomePageWidget> {
),
),
Align(
alignment: const AlignmentDirectional(0.0, 1.0),
alignment:
const AlignmentDirectional(0.0, 1.0),
child: Container(
width: 100.0,
height: 50.0,
decoration: const BoxDecoration(),
child: Align(
alignment: const AlignmentDirectional(1.0, 1.0),
alignment:
const AlignmentDirectional(1.0, 1.0),
child: FlutterFlowIconButton(
borderRadius: 20.0,
borderWidth: 1.0,

View File

@ -1,3 +1,5 @@
import 'package:firebase_messaging/firebase_messaging.dart';
import '/components/templates_components/sign_in_template_component/sign_in_template_component_widget.dart';
import '/components/templates_components/sign_up_template_component/sign_up_template_component_widget.dart';
import '/components/templates_components/welcome_template_component/welcome_template_component_widget.dart';
@ -28,14 +30,18 @@ class _OnBoardingPageWidgetState extends State<OnBoardingPageWidget> {
// On page load action.
SchedulerBinding.instance.addPostFrameCallback((_) async {
if (!mounted)
return; // Adiciona esta linha para verificar se o widget ainda está montado
if (FFAppState().isLogged == true) {
context.pushNamed(
context.goNamed(
'homePage',
extra: <String, dynamic>{
kTransitionInfoKey: const TransitionInfo(
hasTransition: true,
transitionType: PageTransitionType.fade,
duration: Duration(milliseconds: 0),
duration: Duration(
milliseconds: 300), // Altere a duração para algo não nulo
),
},
);

View File

@ -5,10 +5,10 @@ packages:
dependency: transitive
description:
name: _flutterfire_internals
sha256: "4eec93681221723a686ad580c2e7d960e1017cf1a4e0a263c2573c2c6b0bf5cd"
sha256: "0816f12bbbd9e21f72ea8592b11bce4a628d4e5cb7a81ff9f1eee4f3dc23206e"
url: "https://pub.dev"
source: hosted
version: "1.3.25"
version: "1.3.37"
archive:
dependency: transitive
description:
@ -117,18 +117,18 @@ packages:
dependency: "direct main"
description:
name: crop_your_image
sha256: e157c9988f7eb91b5980fdba36e508581915fc8f17c1909fe6b844b3667e161a
sha256: "9ae3b33042de5bda5321fc48aad41054c196bf2cc28350cd30cb8a85c1a7b1bd"
url: "https://pub.dev"
source: hosted
version: "1.0.0"
version: "1.1.0"
cross_file:
dependency: transitive
description:
name: cross_file
sha256: fedaadfa3a6996f75211d835aaeb8fede285dae94262485698afd832371b9a5e
sha256: "55d7b444feb71301ef6b8838dbc1ae02e63dd48c8773f3810ff53bb1e2945b32"
url: "https://pub.dev"
source: hosted
version: "0.3.3+8"
version: "0.3.4+1"
crypto:
dependency: transitive
description:
@ -149,10 +149,10 @@ packages:
dependency: "direct main"
description:
name: csv
sha256: "18aef53ab72181a0b5384562d18c8cbd57e941e24cb8e54eb41409d3d8abdc6d"
sha256: c6aa2679b2a18cb57652920f674488d89712efaf4d3fdf2e537215b35fc19d6c
url: "https://pub.dev"
source: hosted
version: "5.0.1"
version: "6.0.0"
cupertino_icons:
dependency: "direct main"
description:
@ -173,10 +173,10 @@ packages:
dependency: "direct main"
description:
name: device_info_plus
sha256: "77f757b789ff68e4eaf9c56d1752309bd9f7ad557cb105b938a7f8eb89e59110"
sha256: eead12d1a1ed83d8283ab4c2f3fca23ac4082f29f25f29dff0f758f57d06ec91
url: "https://pub.dev"
source: hosted
version: "9.1.2"
version: "10.1.0"
device_info_plus_platform_interface:
dependency: transitive
description:
@ -197,10 +197,10 @@ packages:
dependency: "direct main"
description:
name: easy_debounce
sha256: "476ea3a9062023be76d9d3f48188af75137ad0b57bc250a0fb7adcc471923f51"
sha256: f082609cfb8f37defb9e37fc28bc978c6712dedf08d4c5a26f820fa10165a236
url: "https://pub.dev"
source: hosted
version: "2.0.1"
version: "2.0.3"
equatable:
dependency: "direct main"
description:
@ -237,10 +237,10 @@ packages:
dependency: "direct main"
description:
name: file_picker
sha256: "4e42aacde3b993c5947467ab640882c56947d9d27342a5b6f2895b23956954a6"
sha256: "2ca051989f69d1b2ca012b2cf3ccf78c70d40144f0861ff2c063493f7c8c3d45"
url: "https://pub.dev"
source: hosted
version: "6.1.1"
version: "8.0.5"
file_selector_linux:
dependency: transitive
description:
@ -273,14 +273,38 @@ packages:
url: "https://pub.dev"
source: hosted
version: "0.9.3+1"
firebase_core:
dependency: transitive
firebase_analytics:
dependency: "direct main"
description:
name: firebase_core
sha256: "53316975310c8af75a96e365f9fccb67d1c544ef0acdbf0d88bbe30eedd1c4f9"
name: firebase_analytics
sha256: "3363045ecc3141673262493eea4bd888c2c627c5e986b8766fa5f4bfafdbcdd8"
url: "https://pub.dev"
source: hosted
version: "2.27.0"
version: "11.0.1"
firebase_analytics_platform_interface:
dependency: transitive
description:
name: firebase_analytics_platform_interface
sha256: "5a2c14e18bf6c4423a6462113d85d3dee534a8bdd620391729e9570632d2aec4"
url: "https://pub.dev"
source: hosted
version: "4.0.1"
firebase_analytics_web:
dependency: transitive
description:
name: firebase_analytics_web
sha256: db4bdb166aae9e5a0ce7791672401db139cd342369a92f7eaf020dbff9df2998
url: "https://pub.dev"
source: hosted
version: "0.5.7+9"
firebase_core:
dependency: "direct main"
description:
name: firebase_core
sha256: fae4ab4317c2a7afb13d44ef1e3f9f28a630e10016bc5cfe761e8e6a0ed7816a
url: "https://pub.dev"
source: hosted
version: "3.1.0"
firebase_core_platform_interface:
dependency: transitive
description:
@ -293,34 +317,34 @@ packages:
dependency: transitive
description:
name: firebase_core_web
sha256: c8e1d59385eee98de63c92f961d2a7062c5d9a65e7f45bdc7f1b0b205aab2492
sha256: "6643fe3dbd021e6ccfb751f7882b39df355708afbdeb4130fc50f9305a9d1a3d"
url: "https://pub.dev"
source: hosted
version: "2.11.5"
version: "2.17.2"
firebase_messaging:
dependency: "direct main"
description:
name: firebase_messaging
sha256: e41586e0fd04fe9a40424f8b0053d0832e6d04f49e020cdaf9919209a28497e9
sha256: "2d0ea2234ce46030eda2e6922611115ce603adc614ebd8c00e7db06a8929efbb"
url: "https://pub.dev"
source: hosted
version: "14.7.19"
version: "15.0.1"
firebase_messaging_platform_interface:
dependency: transitive
description:
name: firebase_messaging_platform_interface
sha256: f7a9d74ff7fc588a924f6b2eaeaa148b0db521b13a9db55f6ad45864fa98c06e
sha256: c38c27f58cb6a88b8c145018d0567802376549c32a60098a13f3bdf3ddea326f
url: "https://pub.dev"
source: hosted
version: "4.5.27"
version: "4.5.39"
firebase_messaging_web:
dependency: transitive
description:
name: firebase_messaging_web
sha256: fc21e771166860c55b103701c5ac7cdb2eec28897b97c42e6e5703cbedf9e02e
sha256: "8502849c2f232f7db338c052e045442207a0db82bd03ff14be3c80897dd8c26c"
url: "https://pub.dev"
source: hosted
version: "3.6.8"
version: "3.8.9"
fixnum:
dependency: transitive
description:
@ -338,18 +362,18 @@ packages:
dependency: "direct main"
description:
name: flutter_animate
sha256: f611a67082d4c5ff9b8b7737ec7e675a22af70a94c8c3c22109f14b078d4d2bf
sha256: "7c8a6594a9252dad30cc2ef16e33270b6248c4dedc3b3d06c86c4f3f4dc05ae5"
url: "https://pub.dev"
source: hosted
version: "4.1.1+1"
version: "4.5.0"
flutter_cache_manager:
dependency: "direct main"
description:
name: flutter_cache_manager
sha256: "8207f27539deb83732fdda03e259349046a39a4c767269285f449ade355d54ba"
sha256: "395d6b7831f21f3b989ebedbb785545932adb9afe2622c1ffacf7f4b53a7e544"
url: "https://pub.dev"
source: hosted
version: "3.3.1"
version: "3.3.2"
flutter_launcher_icons:
dependency: "direct dev"
description:
@ -362,10 +386,10 @@ packages:
dependency: "direct dev"
description:
name: flutter_lints
sha256: ad76540d21c066228ee3f9d1dad64a9f7e46530e8bb7c85011a88bc1fd874bc5
sha256: "3f41d009ba7172d5ff9be5f6e6e6abb4300e263aab8866d2a0842ed2a70f8f0c"
url: "https://pub.dev"
source: hosted
version: "3.0.0"
version: "4.0.0"
flutter_local_notifications:
dependency: "direct main"
description:
@ -399,66 +423,74 @@ packages:
dependency: "direct main"
description:
name: flutter_plugin_android_lifecycle
sha256: b068ffc46f82a55844acfa4fdbb61fad72fa2aef0905548419d97f0f95c456da
sha256: c6b0b4c05c458e1c01ad9bcc14041dd7b1f6783d487be4386f793f47a8a4d03e
url: "https://pub.dev"
source: hosted
version: "2.0.17"
version: "2.0.20"
flutter_secure_storage:
dependency: "direct main"
description:
name: flutter_secure_storage
sha256: "98352186ee7ad3639ccc77ad7924b773ff6883076ab952437d20f18a61f0a7c5"
sha256: "165164745e6afb5c0e3e3fcc72a012fb9e58496fb26ffb92cf22e16a821e85d0"
url: "https://pub.dev"
source: hosted
version: "8.0.0"
version: "9.2.2"
flutter_secure_storage_linux:
dependency: "direct main"
description:
name: flutter_secure_storage_linux
sha256: "3d5032e314774ee0e1a7d0a9f5e2793486f0dff2dd9ef5a23f4e3fb2a0ae6a9e"
sha256: "4d91bfc23047422cbcd73ac684bc169859ee766482517c22172c86596bf1464b"
url: "https://pub.dev"
source: hosted
version: "1.2.0"
version: "1.2.1"
flutter_secure_storage_macos:
dependency: "direct main"
description:
name: flutter_secure_storage_macos
sha256: bd33935b4b628abd0b86c8ca20655c5b36275c3a3f5194769a7b3f37c905369c
sha256: "1693ab11121a5f925bbea0be725abfcfbbcf36c1e29e571f84a0c0f436147a81"
url: "https://pub.dev"
source: hosted
version: "3.0.1"
version: "3.1.2"
flutter_secure_storage_platform_interface:
dependency: "direct main"
description:
name: flutter_secure_storage_platform_interface
sha256: "0d4d3a5dd4db28c96ae414d7ba3b8422fd735a8255642774803b2532c9a61d7e"
sha256: cf91ad32ce5adef6fba4d736a542baca9daf3beac4db2d04be350b87f69ac4a8
url: "https://pub.dev"
source: hosted
version: "1.0.2"
version: "1.1.2"
flutter_secure_storage_web:
dependency: "direct main"
description:
name: flutter_secure_storage_web
sha256: "30f84f102df9dcdaa2241866a958c2ec976902ebdaa8883fbfe525f1f2f3cf20"
sha256: f4ebff989b4f07b2656fb16b47852c0aab9fed9b4ec1c70103368337bc1886a9
url: "https://pub.dev"
source: hosted
version: "1.1.2"
version: "1.2.1"
flutter_secure_storage_windows:
dependency: "direct main"
description:
name: flutter_secure_storage_windows
sha256: "38f9501c7cb6f38961ef0e1eacacee2b2d4715c63cc83fe56449c4d3d0b47255"
sha256: b20b07cb5ed4ed74fc567b78a72936203f587eba460af1df11281c9326cd3709
url: "https://pub.dev"
source: hosted
version: "2.1.1"
version: "3.1.2"
flutter_shaders:
dependency: transitive
description:
name: flutter_shaders
sha256: "02750b545c01ff4d8e9bbe8f27a7731aa3778402506c67daa1de7f5fc3f4befe"
url: "https://pub.dev"
source: hosted
version: "0.1.2"
flutter_spinkit:
dependency: "direct main"
description:
name: flutter_spinkit
sha256: b39c753e909d4796906c5696a14daf33639a76e017136c8d82bf3e620ce5bb8e
sha256: d2696eed13732831414595b98863260e33e8882fc069ee80ec35d4ac9ddb0472
url: "https://pub.dev"
source: hosted
version: "5.2.0"
version: "5.2.1"
flutter_staggered_grid_view:
dependency: "direct main"
description:
@ -471,10 +503,10 @@ packages:
dependency: "direct main"
description:
name: flutter_svg
sha256: d39e7f95621fc84376bc0f7d504f05c3a41488c562f4a8ad410569127507402c
sha256: "7b4ca6cf3304575fe9c8ec64813c8d02ee41d2afe60bcfe0678bcb5375d596a2"
url: "https://pub.dev"
source: hosted
version: "2.0.9"
version: "2.0.10+1"
flutter_test:
dependency: "direct dev"
description: flutter
@ -489,10 +521,10 @@ packages:
dependency: "direct main"
description:
name: font_awesome_flutter
sha256: "52671aea66da73b58d42ec6d0912b727a42248dd9a7c76d6c20f275783c48c08"
sha256: "275ff26905134bcb59417cf60ad979136f1f8257f2f449914b2c3e05bbb4cd6f"
url: "https://pub.dev"
source: hosted
version: "10.6.0"
version: "10.7.0"
from_css_color:
dependency: "direct main"
description:
@ -505,18 +537,18 @@ packages:
dependency: "direct main"
description:
name: go_router
sha256: c5fa45fa502ee880839e3b2152d987c44abae26d064a2376d4aad434cf0f7b15
sha256: cdae1b9c8bd7efadcef6112e81c903662ef2ce105cbd220a04bbb7c3425b5554
url: "https://pub.dev"
source: hosted
version: "12.1.3"
version: "14.2.0"
google_fonts:
dependency: "direct main"
description:
name: google_fonts
sha256: f0b8d115a13ecf827013ec9fc883390ccc0e87a96ed5347a3114cac177ef18e8
sha256: b1ac0fe2832c9cc95e5e88b57d627c5e68c223b9657f4b96e1487aa9098c7b82
url: "https://pub.dev"
source: hosted
version: "6.1.0"
version: "6.2.1"
html:
dependency: transitive
description:
@ -529,10 +561,10 @@ packages:
dependency: "direct main"
description:
name: http
sha256: a2bbf9d017fcced29139daa8ed2bba4ece450ab222871df93ca9eec6f80c34ba
sha256: "761a297c042deedc1ffbb156d6e2af13886bb305c2a343a4d972504cd67dd938"
url: "https://pub.dev"
source: hosted
version: "1.2.0"
version: "1.2.1"
http_parser:
dependency: transitive
description:
@ -545,42 +577,42 @@ packages:
dependency: "direct dev"
description:
name: image
sha256: a72242c9a0ffb65d03de1b7113bc4e189686fc07c7147b8b41811d0dd0e0d9bf
sha256: "2237616a36c0d69aef7549ab439b833fb7f9fb9fc861af2cc9ac3eedddd69ca8"
url: "https://pub.dev"
source: hosted
version: "4.0.17"
version: "4.2.0"
image_picker:
dependency: "direct main"
description:
name: image_picker
sha256: "7d7f2768df2a8b0a3cefa5ef4f84636121987d403130e70b17ef7e2cf650ba84"
sha256: "021834d9c0c3de46bf0fe40341fa07168407f694d9b2bb18d532dc1261867f7a"
url: "https://pub.dev"
source: hosted
version: "1.0.4"
version: "1.1.2"
image_picker_android:
dependency: "direct main"
description:
name: image_picker_android
sha256: "47da2161c2e9f8f8a9cbbd89d466d174333fbdd769aeed848912e0b16d9cb369"
sha256: "4161e1f843d8480d2e9025ee22411778c3c9eb7e40076dcf2da23d8242b7b51c"
url: "https://pub.dev"
source: hosted
version: "0.8.8"
version: "0.8.12+3"
image_picker_for_web:
dependency: "direct main"
description:
name: image_picker_for_web
sha256: "50bc9ae6a77eea3a8b11af5eb6c661eeb858fdd2f734c2a4fd17086922347ef7"
sha256: "5d6eb13048cd47b60dbf1a5495424dea226c5faf3950e20bf8120a58efb5b5f3"
url: "https://pub.dev"
source: hosted
version: "3.0.1"
version: "3.0.4"
image_picker_ios:
dependency: "direct main"
description:
name: image_picker_ios
sha256: c5538cacefacac733c724be7484377923b476216ad1ead35a0d2eadcdc0fc497
sha256: "6703696ad49f5c3c8356d576d7ace84d1faf459afb07accbb0fae780753ff447"
url: "https://pub.dev"
source: hosted
version: "0.8.8+2"
version: "0.8.12"
image_picker_linux:
dependency: transitive
description:
@ -601,10 +633,10 @@ packages:
dependency: "direct main"
description:
name: image_picker_platform_interface
sha256: ed9b00e63977c93b0d2d2b343685bed9c324534ba5abafbb3dfbd6a780b1b514
sha256: "9ec26d410ff46f483c5519c29c02ef0e02e13a543f882b152d4bfd2f06802f80"
url: "https://pub.dev"
source: hosted
version: "2.9.1"
version: "2.10.0"
image_picker_windows:
dependency: transitive
description:
@ -625,10 +657,10 @@ packages:
dependency: transitive
description:
name: iregexp
sha256: "0bab197b31adad22c32eef580cda11338dad24ee0e46187d994baef9acee7564"
sha256: "143859dcaeecf6f683102786762d70a47ef8441a0d2287a158172d32d38799cf"
url: "https://pub.dev"
source: hosted
version: "0.1.1"
version: "0.1.2"
js:
dependency: transitive
description:
@ -649,10 +681,10 @@ packages:
dependency: "direct main"
description:
name: json_path
sha256: "0a38c33d6ab3a71795c4ce1867c6278bf1e87dabbc1f707307a00efc55750d9c"
sha256: dc25b4e2297a6bd39fb52b7d122a7787b7dab751fb278d315b54706b98bb76db
url: "https://pub.dev"
source: hosted
version: "0.6.2"
version: "0.7.2"
leak_tracker:
dependency: transitive
description:
@ -681,10 +713,10 @@ packages:
dependency: "direct dev"
description:
name: lints
sha256: cbf8d4b858bb0134ef3ef87841abdf8d63bfc255c266b7bf6b39daa1085c4290
sha256: "976c774dd944a42e83e2467f4cc670daef7eed6295b10b36ae8c85bcbf828235"
url: "https://pub.dev"
source: hosted
version: "3.0.0"
version: "4.0.0"
logging:
dependency: transitive
description:
@ -785,58 +817,58 @@ packages:
dependency: "direct main"
description:
name: path_provider
sha256: c7edf82217d4b2952b2129a61d3ad60f1075b9299e629e149a8d2e39c2e6aad4
sha256: c9e7d3a4cd1410877472158bee69963a4579f78b68c65a2b7d40d1a7a88bb161
url: "https://pub.dev"
source: hosted
version: "2.0.14"
version: "2.1.3"
path_provider_android:
dependency: "direct main"
description:
name: path_provider_android
sha256: da97262be945a72270513700a92b39dd2f4a54dad55d061687e2e37a6390366a
sha256: "9c96da072b421e98183f9ea7464898428e764bc0ce5567f27ec8693442e72514"
url: "https://pub.dev"
source: hosted
version: "2.0.25"
version: "2.2.5"
path_provider_foundation:
dependency: "direct main"
description:
name: path_provider_foundation
sha256: ad4c4d011830462633f03eb34445a45345673dfd4faf1ab0b4735fbd93b19183
sha256: f234384a3fdd67f989b4d54a5d73ca2a6c422fa55ae694381ae0f4375cd1ea16
url: "https://pub.dev"
source: hosted
version: "2.2.2"
version: "2.4.0"
path_provider_linux:
dependency: transitive
description:
name: path_provider_linux
sha256: ffbb8cc9ed2c9ec0e4b7a541e56fd79b138e8f47d2fb86815f15358a349b3b57
sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279
url: "https://pub.dev"
source: hosted
version: "2.1.11"
version: "2.2.1"
path_provider_platform_interface:
dependency: "direct main"
description:
name: path_provider_platform_interface
sha256: "57585299a729335f1298b43245842678cb9f43a6310351b18fb577d6e33165ec"
sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334"
url: "https://pub.dev"
source: hosted
version: "2.0.6"
version: "2.1.2"
path_provider_windows:
dependency: transitive
description:
name: path_provider_windows
sha256: "1cb68ba4cd3a795033de62ba1b7b4564dace301f952de6bfb3cd91b202b6ee96"
sha256: "8bc9f22eee8690981c22aa7fc602f5c85b497a6fb2ceb35ee5a5e5ed85ad8170"
url: "https://pub.dev"
source: hosted
version: "2.1.7"
version: "2.2.1"
petitparser:
dependency: transitive
description:
name: petitparser
sha256: cb3798bef7fc021ac45b308f4b51208a152792445cce0448c9a4ba5879dd8750
sha256: c15605cd28af66339f8eb6fbe0e541bfe2d1b72d5825efc6598f3e0a31b9ad27
url: "https://pub.dev"
source: hosted
version: "5.4.0"
version: "6.0.2"
platform:
dependency: transitive
description:
@ -857,18 +889,18 @@ packages:
dependency: "direct main"
description:
name: provider
sha256: cdbe7530b12ecd9eb455bdaa2fcb8d4dad22e80b8afb4798b41479d5ce26847f
sha256: c8a055ee5ce3fd98d6fc872478b03823ffdb448699c6ebdbbc71d59b596fd48c
url: "https://pub.dev"
source: hosted
version: "6.0.5"
version: "6.1.2"
rfc_6901:
dependency: transitive
description:
name: rfc_6901
sha256: "8d97680dada633146cf75ab9382f2ce2b7e4bd63ceecd867416cf43b5832b988"
sha256: df1bbfa3d023009598f19636d6114c6ac1e0b7bb7bf6a260f0e6e6ce91416820
url: "https://pub.dev"
source: hosted
version: "0.1.1"
version: "0.2.0"
rxdart:
dependency: transitive
description:
@ -881,26 +913,26 @@ packages:
dependency: "direct main"
description:
name: shared_preferences
sha256: "81429e4481e1ccfb51ede496e916348668fd0921627779233bd24cc3ff6abd02"
sha256: d3bbe5553a986e83980916ded2f0b435ef2e1893dfaa29d5a7a790d0eca12180
url: "https://pub.dev"
source: hosted
version: "2.2.2"
version: "2.2.3"
shared_preferences_android:
dependency: "direct main"
description:
name: shared_preferences_android
sha256: "8568a389334b6e83415b6aae55378e158fbc2314e074983362d20c562780fb06"
sha256: "93d0ec9dd902d85f326068e6a899487d1f65ffcd5798721a95330b26c8131577"
url: "https://pub.dev"
source: hosted
version: "2.2.1"
version: "2.2.3"
shared_preferences_foundation:
dependency: "direct main"
description:
name: shared_preferences_foundation
sha256: "7bf53a9f2d007329ee6f3df7268fd498f8373602f943c975598bbb34649b62a7"
sha256: "0a8a893bf4fd1152f93fec03a415d11c27c74454d96e2318a7ac38dd18683ab7"
url: "https://pub.dev"
source: hosted
version: "2.3.4"
version: "2.4.0"
shared_preferences_linux:
dependency: transitive
description:
@ -913,18 +945,18 @@ packages:
dependency: "direct main"
description:
name: shared_preferences_platform_interface
sha256: d4ec5fc9ebb2f2e056c617112aa75dcf92fc2e4faaf2ae999caa297473f75d8a
sha256: "22e2ecac9419b4246d7c22bfbbda589e3acf5c0351137d87dd2939d984d37c3b"
url: "https://pub.dev"
source: hosted
version: "2.3.1"
version: "2.3.2"
shared_preferences_web:
dependency: "direct main"
description:
name: shared_preferences_web
sha256: d762709c2bbe80626ecc819143013cc820fa49ca5e363620ee20a8b15a3e3daf
sha256: "9aee1089b36bd2aafe06582b7d7817fd317ef05fc30e6ba14bff247d0933042a"
url: "https://pub.dev"
source: hosted
version: "2.2.1"
version: "2.3.0"
shared_preferences_windows:
dependency: transitive
description:
@ -958,10 +990,10 @@ packages:
dependency: "direct main"
description:
name: sqflite
sha256: "500d6fec583d2c021f2d25a056d96654f910662c64f836cd2063167b8f1fa758"
sha256: a43e5a27235518c03ca238e7b4732cf35eabe863a369ceba6cbefa537a66f16d
url: "https://pub.dev"
source: hosted
version: "2.2.6"
version: "2.3.3+1"
sqflite_common:
dependency: transitive
description:
@ -998,10 +1030,10 @@ packages:
dependency: "direct main"
description:
name: synchronized
sha256: "5fcbd27688af6082f5abd611af56ee575342c30e87541d0245f7ff99faa02c60"
sha256: "539ef412b170d65ecdafd780f924e5be3f60032a1128df156adad6c5b373d558"
url: "https://pub.dev"
source: hosted
version: "3.1.0"
version: "3.1.0+1"
term_glyph:
dependency: transitive
description:
@ -1022,10 +1054,10 @@ packages:
dependency: "direct main"
description:
name: timeago
sha256: "3a38963615f1178531afa7177199e37522cf8dcbd93a144b597e32ec6d84bd9f"
sha256: d3204eb4c788214883380253da7f23485320a58c11d145babc82ad16bf4e7764
url: "https://pub.dev"
source: hosted
version: "3.2.2"
version: "3.6.1"
timezone:
dependency: transitive
description:
@ -1046,26 +1078,26 @@ packages:
dependency: "direct main"
description:
name: url_launcher
sha256: "0ecc004c62fd3ed36a2ffcbe0dd9700aee63bd7532d0b642a488b1ec310f492e"
sha256: "21b704ce5fa560ea9f3b525b43601c678728ba46725bab9b01187b4831377ed3"
url: "https://pub.dev"
source: hosted
version: "6.2.5"
version: "6.3.0"
url_launcher_android:
dependency: "direct main"
description:
name: url_launcher_android
sha256: d4ed0711849dd8e33eb2dd69c25db0d0d3fdc37e0a62e629fe32f57a22db2745
sha256: ceb2625f0c24ade6ef6778d1de0b2e44f2db71fded235eb52295247feba8c5cf
url: "https://pub.dev"
source: hosted
version: "6.3.0"
version: "6.3.3"
url_launcher_ios:
dependency: "direct main"
description:
name: url_launcher_ios
sha256: "9149d493b075ed740901f3ee844a38a00b33116c7c5c10d7fb27df8987fb51d5"
sha256: "7068716403343f6ba4969b4173cbf3b84fc768042124bc2c011e5d782b24fe89"
url: "https://pub.dev"
source: hosted
version: "6.2.5"
version: "6.3.0"
url_launcher_linux:
dependency: transitive
description:
@ -1094,10 +1126,10 @@ packages:
dependency: transitive
description:
name: url_launcher_web
sha256: fff0932192afeedf63cdd50ecbb1bc825d31aed259f02bb8dba0f3b729a5e88b
sha256: "8d9e750d8c9338601e709cd0885f95825086bd8b642547f26bda435aade95d8a"
url: "https://pub.dev"
source: hosted
version: "2.2.3"
version: "2.3.1"
url_launcher_windows:
dependency: transitive
description:
@ -1150,42 +1182,42 @@ packages:
dependency: "direct main"
description:
name: video_player
sha256: e16f0a83601a78d165dabc17e4dac50997604eb9e4cc76e10fa219046b70cef3
sha256: aced48e701e24c02b0b7f881a8819e4937794e46b5a5821005e2bf3b40a324cc
url: "https://pub.dev"
source: hosted
version: "2.8.1"
version: "2.8.7"
video_player_android:
dependency: "direct main"
description:
name: video_player_android
sha256: "3fe89ab07fdbce786e7eb25b58532d6eaf189ceddc091cb66cba712f8d9e8e55"
sha256: "9529001630e42988f755772972d5014d30121610700e8e502278a245939f8fc8"
url: "https://pub.dev"
source: hosted
version: "2.4.10"
version: "2.5.0"
video_player_avfoundation:
dependency: "direct main"
description:
name: video_player_avfoundation
sha256: fe73d636f82286a3739f5e644f95f09442cacdc436ebbe5436521dc915f3ecac
sha256: d1e9a824f2b324000dc8fb2dcb2a3285b6c1c7c487521c63306cc5b394f68a7c
url: "https://pub.dev"
source: hosted
version: "2.5.1"
version: "2.6.1"
video_player_platform_interface:
dependency: "direct main"
description:
name: video_player_platform_interface
sha256: be72301bf2c0150ab35a8c34d66e5a99de525f6de1e8d27c0672b836fe48f73a
sha256: "236454725fafcacf98f0f39af0d7c7ab2ce84762e3b63f2cbb3ef9a7e0550bc6"
url: "https://pub.dev"
source: hosted
version: "6.2.1"
version: "6.2.2"
video_player_web:
dependency: "direct main"
description:
name: video_player_web
sha256: ab7a462b07d9ca80bed579e30fb3bce372468f1b78642e0911b10600f2c5cb5b
sha256: ff4d69a6614b03f055397c27a71c9d3ddea2b2a23d71b2ba0164f59ca32b8fe2
url: "https://pub.dev"
source: hosted
version: "2.1.2"
version: "2.3.1"
vm_service:
dependency: transitive
description:
@ -1198,10 +1230,10 @@ packages:
dependency: transitive
description:
name: web
sha256: "4188706108906f002b3a293509234588823c8c979dc83304e229ff400c996b05"
sha256: "97da13628db363c635202ad97068d47c5b8aa555808e7a9411963c533b449b27"
url: "https://pub.dev"
source: hosted
version: "0.4.2"
version: "0.5.1"
webview_flutter:
dependency: "direct main"
description:
@ -1262,10 +1294,10 @@ packages:
dependency: transitive
description:
name: xml
sha256: "5bc72e1e45e941d825fd7468b9b4cc3b9327942649aeb6fc5cdbf135f0a86e84"
sha256: b015a8ad1c488f66851d762d3090a21c600e479dc75e68328c52774040cf9226
url: "https://pub.dev"
source: hosted
version: "6.3.0"
version: "6.5.0"
yaml:
dependency: transitive
description:

View File

@ -27,66 +27,68 @@ dependencies:
sdk: flutter
auto_size_text: 3.0.0
cached_network_image: 3.3.1
firebase_core: 3.1.0
webview_flutter: ^4.8.0
collection: 1.18.0
crop_your_image: 1.0.0
csv: 5.0.1
device_info_plus: 9.1.2
crop_your_image: 1.1.0
csv: 6.0.0
device_info_plus: 10.1.0
flutter_local_notifications: 17.1.2
firebase_messaging: ^14.7.19
firebase_messaging: 15.0.1
dropdown_button2: 2.3.9
easy_debounce: 2.0.1
easy_debounce: 2.0.3
equatable: 2.0.5
file_picker: 6.1.1
flutter_animate: 4.1.1+1
flutter_cache_manager: 3.3.1
flutter_plugin_android_lifecycle: 2.0.17
flutter_secure_storage: 8.0.0
flutter_secure_storage_linux: 1.2.0
flutter_secure_storage_macos: 3.0.1
flutter_secure_storage_platform_interface: 1.0.2
flutter_secure_storage_web: 1.1.2
flutter_secure_storage_windows: 2.1.1
flutter_spinkit: 5.2.0
file_picker: 8.0.5
firebase_analytics: 11.0.1
flutter_animate: 4.5.0
flutter_cache_manager: 3.3.2
flutter_plugin_android_lifecycle: 2.0.20
flutter_secure_storage: 9.2.2
flutter_secure_storage_linux: 1.2.1
flutter_secure_storage_macos: 3.1.2
flutter_secure_storage_platform_interface: 1.1.2
flutter_secure_storage_web: 1.2.1
flutter_secure_storage_windows: 3.1.2
flutter_spinkit: 5.2.1
flutter_staggered_grid_view: 0.7.0
flutter_svg: 2.0.9
font_awesome_flutter: 10.6.0
flutter_svg: 2.0.10+1
font_awesome_flutter: 10.7.0
from_css_color: 2.0.0
go_router: 12.1.3
google_fonts: 6.1.0
http: 1.2.0
image_picker: 1.0.4
image_picker_android: 0.8.8
image_picker_for_web: 3.0.1
image_picker_ios: 0.8.8+2
image_picker_platform_interface: 2.9.1
go_router: 14.2.0
google_fonts: 6.2.1
http: 1.2.1
image_picker: 1.1.2
image_picker_android: 0.8.12+3
image_picker_for_web: 3.0.4
image_picker_ios: 0.8.12
image_picker_platform_interface: 2.10.0
intl: ^0.19.0
json_path: 0.6.2
json_path: 0.7.2
mime_type: 1.0.0
page_transition: 2.1.0
path_provider: 2.0.14
path_provider_android: 2.0.25
path_provider_foundation: 2.2.2
path_provider_platform_interface: 2.0.6
path_provider: 2.1.3
path_provider_android: 2.2.5
path_provider_foundation: 2.4.0
path_provider_platform_interface: 2.1.2
plugin_platform_interface: 2.1.8
provider: 6.0.5
shared_preferences: 2.2.2
shared_preferences_android: 2.2.1
shared_preferences_foundation: 2.3.4
shared_preferences_platform_interface: 2.3.1
shared_preferences_web: 2.2.1
sqflite: 2.2.6
synchronized: 3.1.0
timeago: 3.2.2
url_launcher: 6.2.5
url_launcher_android: 6.3.0
url_launcher_ios: 6.2.5
provider: 6.1.2
shared_preferences: 2.2.3
shared_preferences_android: 2.2.3
shared_preferences_foundation: 2.4.0
shared_preferences_platform_interface: 2.3.2
shared_preferences_web: 2.3.0
sqflite: 2.3.3+1
synchronized: 3.1.0+1
timeago: 3.6.1
url_launcher: 6.3.0
url_launcher_android: 6.3.3
url_launcher_ios: 6.3.0
url_launcher_platform_interface: 2.3.2
video_player: 2.8.1
video_player_android: 2.4.10
video_player_avfoundation: 2.5.1
video_player_platform_interface: 6.2.1
video_player_web: 2.1.2
video_player: 2.8.7
video_player_android: 2.5.0
video_player_avfoundation: 2.6.1
video_player_platform_interface: 6.2.2
video_player_web: 2.3.1
# The following adds the Cupertino Icons font to your application.
@ -94,14 +96,14 @@ dependencies:
cupertino_icons: ^1.0.0
dependency_overrides:
http: 1.2.0
http: 1.2.1
uuid: ^4.0.0
dev_dependencies:
flutter_launcher_icons: 0.13.1
flutter_lints: 3.0.0
image: 4.0.17
lints: 3.0.0
flutter_lints: 4.0.0
image: 4.2.0
lints: 4.0.0
flutter_test:
sdk: flutter