تصميم عالمي جديد، وإصلاح الخرائط ومراقب السيرفرات
This commit is contained in:
@@ -119,7 +119,7 @@ class AppLink {
|
||||
static String llama = 'https://api.llama-api.com/chat/completions';
|
||||
static String gemini =
|
||||
'https://generativelanguage.googleapis.com/v1beta3/models/text-bison-001:generateText';
|
||||
static String serverMonitor = "https://tripz-egypt.com/server/monitor.php";
|
||||
static String serverMonitor = "$server/Admin/monitor.php";
|
||||
|
||||
static String test = "$server/test.php";
|
||||
static String loginWalletAdmin = "$seferPaymentServer/loginWalletAdmin.php";
|
||||
|
||||
@@ -72,6 +72,7 @@ class MainApp extends StatelessWidget {
|
||||
fallbackLocale: const Locale('en'),
|
||||
themeMode: ThemeMode.dark,
|
||||
darkTheme: ThemeData(
|
||||
fontFamily: GoogleFonts.tajawal().fontFamily,
|
||||
brightness: Brightness.dark,
|
||||
scaffoldBackgroundColor: AppColor.bg,
|
||||
primaryColor: AppColor.accent,
|
||||
@@ -82,16 +83,11 @@ class MainApp extends StatelessWidget {
|
||||
error: AppColor.danger,
|
||||
),
|
||||
dividerColor: AppColor.divider,
|
||||
textTheme:
|
||||
GoogleFonts.cairoTextTheme(ThemeData.dark().textTheme).copyWith(
|
||||
bodyLarge: GoogleFonts.inter(color: AppColor.textPrimary),
|
||||
bodyMedium: GoogleFonts.inter(color: AppColor.textPrimary),
|
||||
),
|
||||
appBarTheme: const AppBarTheme(
|
||||
appBarTheme: AppBarTheme(
|
||||
backgroundColor: AppColor.bg,
|
||||
elevation: 0,
|
||||
centerTitle: true,
|
||||
titleTextStyle: TextStyle(
|
||||
titleTextStyle: GoogleFonts.tajawal(
|
||||
color: AppColor.textPrimary,
|
||||
fontSize: 18,
|
||||
fontWeight: FontWeight.bold,
|
||||
|
||||
@@ -39,6 +39,7 @@ import 'analytics/live_analytics_page.dart';
|
||||
import 'package:siro_admin/views/widgets/responsive_layout.dart';
|
||||
import 'package:siro_admin/views/widgets/web_sidebar.dart';
|
||||
import '../transit/org_list_page.dart';
|
||||
import 'package:siro_admin/views/widgets/glass_container.dart';
|
||||
class AdminHomePage extends StatefulWidget {
|
||||
const AdminHomePage({super.key});
|
||||
|
||||
@@ -528,21 +529,14 @@ class _AdminHomePageState extends State<AdminHomePage>
|
||||
}
|
||||
|
||||
Widget _buildHighlightCard(_HighlightData h) {
|
||||
return Container(
|
||||
width: 148,
|
||||
return GlassContainer(
|
||||
width: 155,
|
||||
padding: const EdgeInsets.all(16),
|
||||
decoration: BoxDecoration(
|
||||
color: _surface,
|
||||
borderRadius: BorderRadius.circular(16),
|
||||
border: Border.all(color: h.color.withOpacity(0.2)),
|
||||
boxShadow: [
|
||||
BoxShadow(
|
||||
color: h.color.withOpacity(0.08),
|
||||
blurRadius: 16,
|
||||
offset: const Offset(0, 6),
|
||||
),
|
||||
],
|
||||
),
|
||||
borderRadius: 16,
|
||||
gradientColors: [
|
||||
h.color.withOpacity(0.18),
|
||||
h.color.withOpacity(0.03),
|
||||
],
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
|
||||
@@ -476,6 +476,7 @@ class _MapTabState extends State<_MapTab> with AutomaticKeepAliveClientMixin {
|
||||
urlTemplate:
|
||||
'https://{s}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}{r}.png',
|
||||
subdomains: const ['a', 'b', 'c', 'd'],
|
||||
userAgentPackageName: 'com.siromove.admin',
|
||||
),
|
||||
CircleLayer(circles: markers),
|
||||
],
|
||||
|
||||
@@ -3,6 +3,7 @@ import 'package:get/get.dart';
|
||||
import 'package:siro_admin/constant/colors.dart';
|
||||
import 'package:siro_admin/controller/admin/dashboard_v2_controller.dart';
|
||||
import 'package:flutter_staggered_animations/flutter_staggered_animations.dart';
|
||||
import 'package:siro_admin/views/widgets/glass_container.dart';
|
||||
|
||||
class DashboardV2Widget extends StatelessWidget {
|
||||
const DashboardV2Widget({super.key});
|
||||
@@ -133,21 +134,14 @@ class DashboardV2Widget extends StatelessWidget {
|
||||
|
||||
Widget _buildStatCard(Map<String, dynamic> stat) {
|
||||
final color = stat['color'] as Color;
|
||||
return Container(
|
||||
width: 140,
|
||||
return GlassContainer(
|
||||
width: 150,
|
||||
padding: const EdgeInsets.all(16),
|
||||
decoration: BoxDecoration(
|
||||
color: AppColor.surface,
|
||||
borderRadius: BorderRadius.circular(16),
|
||||
border: Border.all(color: color.withOpacity(0.3)),
|
||||
boxShadow: [
|
||||
BoxShadow(
|
||||
color: color.withOpacity(0.05),
|
||||
blurRadius: 10,
|
||||
offset: const Offset(0, 4),
|
||||
),
|
||||
],
|
||||
),
|
||||
borderRadius: 16,
|
||||
gradientColors: [
|
||||
color.withOpacity(0.15),
|
||||
color.withOpacity(0.05),
|
||||
],
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
|
||||
@@ -537,7 +537,7 @@ class _SiroTrackerScreenState extends State<SiroTrackerScreen>
|
||||
children: [
|
||||
TileLayer(
|
||||
urlTemplate: 'https://tile.openstreetmap.org/{z}/{x}/{y}.png',
|
||||
userAgentPackageName: 'com.tripz.app',
|
||||
userAgentPackageName: 'com.siromove.admin',
|
||||
),
|
||||
MarkerLayer(markers: _markers),
|
||||
],
|
||||
|
||||
@@ -449,7 +449,7 @@ class RideMonitorScreen extends StatelessWidget {
|
||||
children: [
|
||||
TileLayer(
|
||||
urlTemplate: 'https://tile.openstreetmap.org/{z}/{x}/{y}.png',
|
||||
userAgentPackageName: 'com.sefer.admin',
|
||||
userAgentPackageName: 'com.siromove.admin',
|
||||
),
|
||||
|
||||
// 1. ROUTE LINE (Polyline)
|
||||
|
||||
@@ -228,7 +228,7 @@ class _HeatmapPageState extends State<HeatmapPage> {
|
||||
children: [
|
||||
TileLayer(
|
||||
urlTemplate: 'https://tile.openstreetmap.org/{z}/{x}/{y}.png',
|
||||
userAgentPackageName: 'com.siro.admin',
|
||||
userAgentPackageName: 'com.siromove.admin',
|
||||
),
|
||||
CircleLayer(circles: _markers),
|
||||
],
|
||||
|
||||
@@ -1001,7 +1001,7 @@ class _RideMapMonitorScreenState extends State<RideMapMonitorScreen> {
|
||||
children: [
|
||||
TileLayer(
|
||||
urlTemplate: 'https://tile.openstreetmap.org/{z}/{x}/{y}.png',
|
||||
userAgentPackageName: 'com.tripz.app',
|
||||
userAgentPackageName: 'com.siromove.admin',
|
||||
),
|
||||
// Route Polyline
|
||||
if (startPos != null && endPos != null)
|
||||
|
||||
@@ -1178,11 +1178,12 @@ LineChartBarData _line(
|
||||
return LineChartBarData(
|
||||
spots: spots,
|
||||
isCurved: !isStep,
|
||||
curveSmoothness: 0.25,
|
||||
curveSmoothness: 0.4,
|
||||
isStepLineChart: isStep,
|
||||
color: color,
|
||||
barWidth: width,
|
||||
barWidth: width + 1,
|
||||
isStrokeCapRound: !isStep,
|
||||
shadow: Shadow(color: color.withOpacity(0.4), blurRadius: 8, offset: const Offset(0, 4)),
|
||||
dotData: const FlDotData(show: false),
|
||||
dashArray: isDashed ? [5, 5] : null,
|
||||
lineChartStepData: const LineChartStepData(stepDirection: 0.5),
|
||||
@@ -1191,7 +1192,7 @@ LineChartBarData _line(
|
||||
gradient: LinearGradient(
|
||||
begin: Alignment.topCenter,
|
||||
end: Alignment.bottomCenter,
|
||||
colors: [color.withOpacity(0.12), color.withOpacity(0.0)],
|
||||
colors: [color.withOpacity(0.35), color.withOpacity(0.0)],
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
@@ -0,0 +1,71 @@
|
||||
import 'dart:ui';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class GlassContainer extends StatelessWidget {
|
||||
final Widget child;
|
||||
final double? width;
|
||||
final double? height;
|
||||
final EdgeInsetsGeometry? padding;
|
||||
final EdgeInsetsGeometry? margin;
|
||||
final double borderRadius;
|
||||
final List<Color>? gradientColors;
|
||||
final double blur;
|
||||
|
||||
const GlassContainer({
|
||||
super.key,
|
||||
required this.child,
|
||||
this.width,
|
||||
this.height,
|
||||
this.padding,
|
||||
this.margin,
|
||||
this.borderRadius = 16.0,
|
||||
this.gradientColors,
|
||||
this.blur = 10.0,
|
||||
});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final defaultGradient = [
|
||||
Colors.white.withOpacity(0.1),
|
||||
Colors.white.withOpacity(0.05),
|
||||
];
|
||||
|
||||
return Container(
|
||||
width: width,
|
||||
height: height,
|
||||
margin: margin,
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(borderRadius),
|
||||
boxShadow: [
|
||||
BoxShadow(
|
||||
color: Colors.black.withOpacity(0.1),
|
||||
blurRadius: 20,
|
||||
spreadRadius: 1,
|
||||
)
|
||||
],
|
||||
),
|
||||
child: ClipRRect(
|
||||
borderRadius: BorderRadius.circular(borderRadius),
|
||||
child: BackdropFilter(
|
||||
filter: ImageFilter.blur(sigmaX: blur, sigmaY: blur),
|
||||
child: Container(
|
||||
padding: padding,
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(borderRadius),
|
||||
border: Border.all(
|
||||
color: Colors.white.withOpacity(0.2),
|
||||
width: 1.5,
|
||||
),
|
||||
gradient: LinearGradient(
|
||||
begin: Alignment.topLeft,
|
||||
end: Alignment.bottomRight,
|
||||
colors: gradientColors ?? defaultGradient,
|
||||
),
|
||||
),
|
||||
child: child,
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user