replace: swap prosappweb content for prosapp_web_app (more complete version)

prosapp_web_app has chat, dashboard, calendar, support, 13 providers and
Fluro URL routing. Keep Dockerfile + nginx.conf from previous prosappweb.
Upgrade google_fonts 6.2.1 → 8.1.0 (Dart 3.12 compat fix).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Lizandro Guarnizo
2026-06-18 15:26:32 -05:00
co-authored by Claude Sonnet 4.6
parent 74a4f41902
commit 15175c1b91
334 changed files with 12914 additions and 25727 deletions
+9
View File
@@ -0,0 +1,9 @@
import 'package:shared_preferences/shared_preferences.dart';
class LocalStorage {
static late SharedPreferences prefs;
static Future<void> configurePrefs() async {
prefs = await SharedPreferences.getInstance();
}
}
+17
View File
@@ -0,0 +1,17 @@
import 'package:flutter/material.dart';
class NavigationService {
static GlobalKey<NavigatorState> navigatorKey = GlobalKey<NavigatorState>();
static navigateTo(String routeName) {
navigatorKey.currentState!.pushNamed(routeName);
}
static Future<dynamic> navigateToFuture(String routeName) async {
return await navigatorKey.currentState!.pushNamed(routeName);
}
static replaceTo(String routeName) {
navigatorKey.currentState!.pushReplacementNamed(routeName);
}
}
+53
View File
@@ -0,0 +1,53 @@
import 'package:flutter/material.dart';
class NotificationsService {
static GlobalKey<ScaffoldMessengerState> messengerKey = GlobalKey<ScaffoldMessengerState>();
static showSnackBarError(String message) {
final snackBar = SnackBar(
backgroundColor: Colors.red.withOpacity(0.9),
content: Text(
message,
style: const TextStyle(
color: Colors.white,
fontSize: 20,
),
),
);
messengerKey.currentState!
..removeCurrentSnackBar()
..showSnackBar(snackBar);
}
static showSnackbar(String message) {
final snackBar = SnackBar(
backgroundColor: Colors.blue.withOpacity(0.9),
content: Text(
message,
style: const TextStyle(
color: Colors.white,
fontSize: 20,
),
),
);
messengerKey.currentState!
..removeCurrentSnackBar()
..showSnackBar(snackBar);
}
static showBusyIndicator(BuildContext context) {
const AlertDialog dialog = AlertDialog(
content: SizedBox(
width: 100,
height: 100,
child: Center(
child: CircularProgressIndicator(),
),
),
);
showDialog(context: context, builder: (_) => dialog);
}
}