diff --git a/lib/main.dart b/lib/main.dart index 81a8fa6..eb88f94 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -18,18 +18,18 @@ void main() async { } catch (e) { debugPrint('Error initializing services: $e'); } - + final themeController = await ThemeController.create(); -runApp( - WidgetsBindingObserverWidget( - child: ChangeNotifierProvider.value( - value: themeController, - child: const MyApp(), + runApp( + WidgetsBindingObserverWidget( + child: ChangeNotifierProvider.value( + value: themeController, + child: const MyApp(), + ), ), - ), -); - + ); +} // ✅ THIS WAS MISSING class MyApp extends StatelessWidget { const MyApp({super.key}); @@ -37,11 +37,14 @@ class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { final themeController = context.watch(); + return MaterialApp( title: 'Ell-ena', debugShowCheckedModeBanner: false, navigatorKey: NavigationService().navigatorKey, - navigatorObservers: [AppRouteObserver.instance], + navigatorObservers: [ + AppRouteObserver.instance + ], theme: lightTheme, darkTheme: darkTheme, themeMode: themeController.flutterThemeMode, @@ -53,19 +56,19 @@ class MyApp extends StatelessWidget { settings: settings, ); } else if (settings.name == '/home') { - final args = (settings.arguments is Map) - ? settings.arguments as Map + final args = (settings.arguments is Map) + ? settings.arguments as Map : null; - + return MaterialPageRoute( builder: (context) => HomeScreen(arguments: args), settings: settings, ); } else if (settings.name == '/chat') { - final args = (settings.arguments is Map) - ? settings.arguments as Map + final args = (settings.arguments is Map) + ? settings.arguments as Map : null; - + return MaterialPageRoute( builder: (context) => ChatScreen(arguments: args), settings: settings, @@ -78,49 +81,48 @@ class MyApp extends StatelessWidget { } class WidgetsBindingObserverWidget extends StatefulWidget { - final Widget child; + final Widget child; - const WidgetsBindingObserverWidget({ - super.key, - required this.child, - }); + const WidgetsBindingObserverWidget({ + super.key, + required this.child, + }); - @override - State createState() => - _WidgetsBindingObserverWidgetState(); - } + @override + State createState() => + _WidgetsBindingObserverWidgetState(); +} - class _WidgetsBindingObserverWidgetState - extends State - with WidgetsBindingObserver { +class _WidgetsBindingObserverWidgetState + extends State + with WidgetsBindingObserver { - @override - void initState() { - super.initState(); - WidgetsBinding.instance.addObserver(this); - } + @override + void initState() { + super.initState(); + WidgetsBinding.instance.addObserver(this); + } - @override - void didChangeAppLifecycleState(AppLifecycleState state) { - if (state == AppLifecycleState.detached) { - SupabaseService().dispose(); // ✅ ONLY IMPORTANT LINE - } + @override + void didChangeAppLifecycleState(AppLifecycleState state) { + if (state == AppLifecycleState.detached) { + SupabaseService().dispose(); } + } - @override - void dispose() { - WidgetsBinding.instance.removeObserver(this); - super.dispose(); - } + @override + void dispose() { + WidgetsBinding.instance.removeObserver(this); + super.dispose(); + } - @override - Widget build(BuildContext context) { - return widget.child; - } + @override + Widget build(BuildContext context) { + return widget.child; } +} -// Simple singleton RouteObserver to allow screens to refresh on focus class AppRouteObserver extends RouteObserver> { AppRouteObserver._(); static final AppRouteObserver instance = AppRouteObserver._(); -} +} \ No newline at end of file diff --git a/lib/screens/auth/team_selection_dialog.dart b/lib/screens/auth/team_selection_dialog.dart index eefed3a..82ed547 100644 --- a/lib/screens/auth/team_selection_dialog.dart +++ b/lib/screens/auth/team_selection_dialog.dart @@ -317,7 +317,7 @@ class _OptionCard extends StatelessWidget { padding: const EdgeInsets.all(16), decoration: BoxDecoration( color: isSelected - ? Colors.green.withOpacity(0.2) + ? Colors.green.withValues(alpha:0.2) : Theme.of(context).colorScheme.surfaceContainerLow, border: Border.all( color: isSelected diff --git a/lib/screens/calendar/calendar_screen.dart b/lib/screens/calendar/calendar_screen.dart index 3b0fd59..9a716fd 100644 --- a/lib/screens/calendar/calendar_screen.dart +++ b/lib/screens/calendar/calendar_screen.dart @@ -183,7 +183,7 @@ class _CalendarScreenState extends State { Future _loadEventsFromNetwork() async { try { // Load tasks, tickets, and meetings in parallel - final results = await Future.wait([ + await Future.wait([ _loadTasks(), _loadTickets(), _loadMeetings(), @@ -398,7 +398,7 @@ class _CalendarScreenState extends State { height: 16, width: events.length > 3 ? 35 : (events.length * 8 + 10), decoration: BoxDecoration( - color: Colors.green.withOpacity(markerOpacity), + color: Colors.green.withValues(alpha:markerOpacity), borderRadius: BorderRadius.circular(10), ), child: Center( @@ -421,13 +421,13 @@ class _CalendarScreenState extends State { selectedTextStyle: TextStyle(color: colorScheme.onPrimary), todayTextStyle: TextStyle(color: colorScheme.onSurface), outsideTextStyle: - TextStyle(color: colorScheme.onSurface.withOpacity(0.38)), + TextStyle(color: colorScheme.onSurface.withValues(alpha:0.38)), selectedDecoration: const BoxDecoration( color: Colors.green, shape: BoxShape.circle, ), todayDecoration: BoxDecoration( - color: Colors.green.withOpacity(0.8), + color: Colors.green.withValues(alpha:0.8), shape: BoxShape.circle, ), markersMaxCount: 0, @@ -484,7 +484,7 @@ class _CalendarScreenState extends State { SizedBox( width: 50, child: Text( - '${time.format(context).toLowerCase()}', + time.format(context).toLowerCase(), style: TextStyle( color: Theme.of(context).colorScheme.onSurfaceVariant, fontSize: 12), @@ -533,7 +533,7 @@ class _CalendarScreenState extends State { margin: const EdgeInsets.only(top: 4), padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4), decoration: BoxDecoration( - color: event.type.color.withOpacity(0.2), + color: event.type.color.withValues(alpha:0.2), borderRadius: BorderRadius.circular(8), border: Border.all(color: event.type.color, width: 1), ), @@ -670,7 +670,7 @@ class _CalendarScreenState extends State { child: Container( padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12), decoration: BoxDecoration( - color: color.withOpacity(0.1), + color: color.withValues(alpha: 0.1), borderRadius: BorderRadius.circular(12), ), child: Row( @@ -696,14 +696,6 @@ class _CalendarScreenState extends State { if (_selectedDay == null) return; - final selectedDateTime = DateTime( - _selectedDay!.year, - _selectedDay!.month, - _selectedDay!.day, - selectedTime.hour, - selectedTime.minute, - ); - dynamic result; switch (type) { diff --git a/lib/screens/chat/chat_screen.dart b/lib/screens/chat/chat_screen.dart index 614739b..7827061 100644 --- a/lib/screens/chat/chat_screen.dart +++ b/lib/screens/chat/chat_screen.dart @@ -183,7 +183,7 @@ class _ChatScreenState extends State with TickerProviderStateMixin { borderRadius: BorderRadius.circular(20), boxShadow: [ BoxShadow( - color: colorScheme.shadow.withOpacity(0.3), + color: colorScheme.shadow.withValues(alpha:0.3), blurRadius: 10, spreadRadius: 2, ), @@ -205,7 +205,7 @@ class _ChatScreenState extends State with TickerProviderStateMixin { width: 100, decoration: BoxDecoration( shape: BoxShape.circle, - color: Colors.green.withOpacity(0.1), + color: Colors.green.withValues(alpha:0.1), ), child: Stack( alignment: Alignment.center, @@ -216,7 +216,7 @@ class _ChatScreenState extends State with TickerProviderStateMixin { height: 100 * _waveformController.value, decoration: BoxDecoration( shape: BoxShape.circle, - color: Colors.green.withOpacity( + color: Colors.green.withValues(alpha: 0.2 * (1 - _waveformController.value)), ), ), @@ -226,7 +226,7 @@ class _ChatScreenState extends State with TickerProviderStateMixin { height: 70 * _waveformController.value, decoration: BoxDecoration( shape: BoxShape.circle, - color: Colors.green.withOpacity( + color: Colors.green.withValues(alpha: 0.3 * (1 - _waveformController.value)), ), ), @@ -1126,51 +1126,47 @@ class _ChatScreenState extends State with TickerProviderStateMixin { } } - Future _toggleListening() async { - if (!_speechAvailable) { - ScaffoldMessenger.of(context).showSnackBar( - const SnackBar( - content: Text('Speech recognition not available on this device')), - ); - return; - } - if (_speech.isListening) { - await _speech.stop(); - setState(() => _isListening = false); - return; - } +Future _toggleListening() async { + if (!_speechAvailable) { + ScaffoldMessenger.of(context).showSnackBar( + const SnackBar( + content: Text('Speech recognition not available on this device'), + ), + ); + return; + } - // Show the listening animation dialog - if (mounted) { - showDialog( - context: context, - barrierDismissible: true, - builder: (context) => _buildListeningDialog(), - ).then((_) { - // Stop listening if dialog was dismissed - if (_isListening && _speech.isListening) { - _speech.stop(); - setState(() => _isListening = false); - } - }); - } + if (_speech.isListening) { + await _speech.stop(); + setState(() => _isListening = false); + return; + } - setState(() => _isListening = true); - await _speech.listen( - onResult: (result) { - setState(() { - _messageController.text = result.recognizedWords; - }); - }, - listenMode: stt.ListenMode.dictation, - partialResults: true, - cancelOnError: true, - onSoundLevelChange: (level) { - // You can use this to update animation intensity if needed - }, - ); + // Show the listening animation dialog + if (mounted) { + showDialog( + context: context, + barrierDismissible: true, + builder: (context) => _buildListeningDialog(), + ).then((_) { + if (_isListening && _speech.isListening) { + _speech.stop(); + setState(() => _isListening = false); + } + }); } + setState(() => _isListening = true); + +await _speech.listen( + onResult: (result) { + // logic + }, + listenMode: stt.ListenMode.dictation, + partialResults: true, + cancelOnError: true, +); +} @override Widget build(BuildContext context) { final colorScheme = Theme.of(context).colorScheme; @@ -1184,7 +1180,7 @@ class _ChatScreenState extends State with TickerProviderStateMixin { color: colorScheme.surface, boxShadow: [ BoxShadow( - color: colorScheme.shadow.withOpacity(0.2), + color: colorScheme.shadow.withValues(alpha:0.2), offset: const Offset(0, 2), blurRadius: 4, ), @@ -1198,7 +1194,7 @@ class _ChatScreenState extends State with TickerProviderStateMixin { width: 40, height: 40, decoration: BoxDecoration( - color: Colors.green.withOpacity(0.2), + color: Colors.green.withValues(alpha:0.2), shape: BoxShape.circle, ), child: const Icon(Icons.smart_toy, color: Colors.green), @@ -1227,7 +1223,7 @@ class _ChatScreenState extends State with TickerProviderStateMixin { Container( padding: const EdgeInsets.all(8), decoration: BoxDecoration( - color: Colors.green.withOpacity(0.1), + color: Colors.green.withValues(alpha:0.1), shape: BoxShape.circle, ), child: const Icon( @@ -1276,7 +1272,7 @@ class _ChatScreenState extends State with TickerProviderStateMixin { padding: const EdgeInsets.symmetric( horizontal: 16, vertical: 12), decoration: BoxDecoration( - color: colorScheme.surfaceVariant, + color: colorScheme.surfaceContainerHighest, borderRadius: BorderRadius.circular(20), ), child: LoadingAnimationWidget.staggeredDotsWave( @@ -1313,7 +1309,7 @@ class _ChatScreenState extends State with TickerProviderStateMixin { child: Container( padding: const EdgeInsets.symmetric(horizontal: 16), decoration: BoxDecoration( - color: colorScheme.surfaceVariant, + color: colorScheme.surfaceContainerHighest, borderRadius: BorderRadius.circular(24), ), child: TextField( @@ -1336,7 +1332,7 @@ class _ChatScreenState extends State with TickerProviderStateMixin { shape: BoxShape.circle, boxShadow: [ BoxShadow( - color: Colors.green.withOpacity(0.3), + color: Colors.green.withValues(alpha:0.3), blurRadius: 8, offset: const Offset(0, 2), ), @@ -1355,7 +1351,7 @@ class _ChatScreenState extends State with TickerProviderStateMixin { shape: BoxShape.circle, boxShadow: [ BoxShadow( - color: Colors.green.withOpacity(0.3), + color: Colors.green.withValues(alpha:0.3), blurRadius: 8, offset: const Offset(0, 2), ), @@ -1387,7 +1383,7 @@ class _ChatBubble extends StatelessWidget { final bubbleTextColor = message.isUser ? Colors.white : colorScheme.onSurface; final bubbleColor = - message.isUser ? Colors.green : colorScheme.surfaceVariant; + message.isUser ? Colors.green : colorScheme.surfaceContainerHighest; return Padding( padding: const EdgeInsets.symmetric(vertical: 4, horizontal: 8), child: Row( @@ -1554,7 +1550,7 @@ class _ChatBubble extends StatelessWidget { width: 36, height: 36, decoration: BoxDecoration( - color: isUser ? Colors.green.shade700 : colorScheme.surfaceVariant, + color: isUser ? Colors.green.shade700 : colorScheme.surfaceContainerHighest, shape: BoxShape.circle, border: Border.all( color: isUser ? Colors.green.shade300 : colorScheme.outline, @@ -1608,7 +1604,7 @@ class _ItemCard extends StatelessWidget { decoration: BoxDecoration( color: colorScheme.surface, borderRadius: BorderRadius.circular(16), - border: Border.all(color: Colors.green.withOpacity(0.3), width: 1), + border: Border.all(color: Colors.green.withValues(alpha:0.3), width: 1), ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, @@ -1616,7 +1612,7 @@ class _ItemCard extends StatelessWidget { Container( padding: const EdgeInsets.all(16), decoration: BoxDecoration( - color: Colors.green.withOpacity(0.1), + color: Colors.green.withValues(alpha:0.1), borderRadius: const BorderRadius.only( topLeft: Radius.circular(16), topRight: Radius.circular(16), @@ -1667,7 +1663,7 @@ class _ItemCard extends StatelessWidget { TextButton( onPressed: onViewItem, style: TextButton.styleFrom( - backgroundColor: Colors.green.withOpacity(0.1), + backgroundColor: Colors.green.withValues(alpha:0.1), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(20), ), diff --git a/lib/screens/home/dashboard_screen.dart b/lib/screens/home/dashboard_screen.dart index 79a319f..f9b3bad 100644 --- a/lib/screens/home/dashboard_screen.dart +++ b/lib/screens/home/dashboard_screen.dart @@ -417,7 +417,7 @@ class _DashboardScreenState extends State ), CustomPaint( painter: DotPatternPainter( - color: Colors.white.withOpacity(0.1), + color: Colors.white.withValues(alpha:0.1), ), size: Size(MediaQuery.of(context).size.width, 140), ), @@ -435,7 +435,7 @@ class _DashboardScreenState extends State width: 48, height: 48, decoration: BoxDecoration( - color: Colors.white.withOpacity(0.2), + color: Colors.white.withValues(alpha:0.2), shape: BoxShape.circle, border: Border.all( color: Colors.white, @@ -483,7 +483,7 @@ class _DashboardScreenState extends State vertical: 4, ), decoration: BoxDecoration( - color: Colors.white.withOpacity( + color: Colors.white.withValues(alpha: 0.2, ), borderRadius: @@ -528,7 +528,7 @@ class _DashboardScreenState extends State _currentTeamName ?? 'My Team', style: TextStyle( color: Colors.white - .withOpacity(0.9), + .withValues(alpha:0.9), fontSize: 14, ), ), @@ -536,7 +536,7 @@ class _DashboardScreenState extends State Icon( Icons.swap_horiz, color: Colors.white - .withOpacity(0.9), + .withValues(alpha:0.9), size: 16, ), ], @@ -591,7 +591,7 @@ class _DashboardScreenState extends State borderRadius: BorderRadius.circular(20), boxShadow: [ BoxShadow( - color: Theme.of(context).colorScheme.shadow.withOpacity(0.2), + color: Theme.of(context).colorScheme.shadow.withValues(alpha:0.2), blurRadius: 10, offset: const Offset(0, 5), ), @@ -615,7 +615,7 @@ class _DashboardScreenState extends State vertical: 6, ), decoration: BoxDecoration( - color: Colors.green.shade400.withOpacity(0.2), + color: Colors.green.shade400.withValues(alpha:0.2), borderRadius: BorderRadius.circular(20), ), child: Row( @@ -704,7 +704,7 @@ class _DashboardScreenState extends State Container( padding: const EdgeInsets.all(12), decoration: BoxDecoration( - color: color.withOpacity(0.1), + color: color.withValues(alpha:0.1), shape: BoxShape.circle, ), child: Icon(icon, color: color, size: 24), @@ -735,7 +735,7 @@ class _DashboardScreenState extends State borderRadius: BorderRadius.circular(20), boxShadow: [ BoxShadow( - color: colorScheme.shadow.withOpacity(0.1), + color: colorScheme.shadow.withValues(alpha:0.1), blurRadius: 10, offset: const Offset(0, 5), ), @@ -862,7 +862,7 @@ class _DashboardScreenState extends State toY: 5, // Maximum expected value or slightly higher color: - Colors.green.shade400.withOpacity(0.1), + Colors.green.shade400.withValues(alpha:0.1), ), ), ], @@ -935,7 +935,7 @@ class _DashboardScreenState extends State dotData: FlDotData(show: true), belowBarData: BarAreaData( show: true, - color: Colors.green.shade400.withOpacity(0.1), + color: Colors.green.shade400.withValues(alpha:0.1), ), ), ], @@ -1062,7 +1062,7 @@ class _DashboardScreenState extends State borderRadius: BorderRadius.circular(20), boxShadow: [ BoxShadow( - color: colorScheme.shadow.withOpacity(0.1), + color: colorScheme.shadow.withValues(alpha:0.1), blurRadius: 10, offset: const Offset(0, 5), ), @@ -1123,7 +1123,7 @@ class _DashboardScreenState extends State Container( padding: const EdgeInsets.all(8), decoration: BoxDecoration( - color: color.withOpacity(0.1), + color: color.withValues(alpha:0.1), shape: BoxShape.circle, ), child: Icon(icon, color: color, size: 20), @@ -1196,7 +1196,7 @@ class _DashboardScreenState extends State borderRadius: BorderRadius.circular(20), boxShadow: [ BoxShadow( - color: Theme.of(context).colorScheme.shadow.withOpacity(0.1), + color: Theme.of(context).colorScheme.shadow.withValues(alpha:0.1), blurRadius: 10, offset: const Offset(0, 5), ), @@ -1266,7 +1266,7 @@ class _DashboardScreenState extends State Container( padding: const EdgeInsets.all(8), decoration: BoxDecoration( - color: (a['color'] as Color).withOpacity(0.1), + color: (a['color'] as Color).withValues(alpha:0.1), shape: BoxShape.circle, ), child: Icon(a['icon'] as IconData, diff --git a/lib/screens/meetings/meeting_detail_screen.dart b/lib/screens/meetings/meeting_detail_screen.dart index c5d6ee0..15fa63b 100644 --- a/lib/screens/meetings/meeting_detail_screen.dart +++ b/lib/screens/meetings/meeting_detail_screen.dart @@ -494,8 +494,8 @@ class _MeetingDetailScreenState extends State { padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 6), decoration: BoxDecoration( color: isUpcoming - ? Colors.green.shade400.withOpacity(0.2) - : Colors.grey.shade600.withOpacity(0.2), + ? Colors.green.shade400.withValues(alpha:0.2) + : Colors.grey.shade600.withValues(alpha:0.2), borderRadius: BorderRadius.circular(16), ), child: Row( @@ -548,7 +548,7 @@ class _MeetingDetailScreenState extends State { borderRadius: BorderRadius.circular(16), boxShadow: [ BoxShadow( - color: cs.shadow.withOpacity(0.1), + color: cs.shadow.withValues(alpha:0.1), blurRadius: 10, offset: const Offset(0, 5), ), @@ -978,9 +978,9 @@ class _MeetingDetailScreenState extends State { margin: const EdgeInsets.only(bottom: 8), padding: const EdgeInsets.all(12), decoration: BoxDecoration( - color: color.withOpacity(0.12), + color: color.withValues(alpha:0.12), borderRadius: BorderRadius.circular(12), - border: Border.all(color: color.withOpacity(0.6)), + border: Border.all(color: color.withValues(alpha:0.6)), ), child: Row( children: [ diff --git a/lib/screens/meetings/meeting_screen.dart b/lib/screens/meetings/meeting_screen.dart index a08d402..4a4059e 100644 --- a/lib/screens/meetings/meeting_screen.dart +++ b/lib/screens/meetings/meeting_screen.dart @@ -240,7 +240,7 @@ class _MeetingScreenState extends State { children: [ CircleAvatar( radius: 22, - backgroundColor: color.withOpacity(0.2), + backgroundColor: color.withValues(alpha:0.2), child: Icon( icon, color: color, @@ -289,7 +289,7 @@ class _MeetingScreenState extends State { alignment: Alignment.center, decoration: BoxDecoration( color: - isSelected ? color.withOpacity(0.2) : Colors.transparent, + isSelected ? color.withValues(alpha:0.2) : Colors.transparent, borderRadius: BorderRadius.circular(20), border: Border.all( color: isSelected ? color : Colors.transparent, @@ -470,7 +470,7 @@ class _MeetingCard extends StatelessWidget { Container( padding: const EdgeInsets.all(16), decoration: BoxDecoration( - color: Colors.green.shade400.withOpacity(0.2), + color: Colors.green.shade400.withValues(alpha:0.2), borderRadius: const BorderRadius.only( topLeft: Radius.circular(16), topRight: Radius.circular(16), diff --git a/lib/screens/onboarding/onboarding_screen.dart b/lib/screens/onboarding/onboarding_screen.dart index 9352054..6400392 100644 --- a/lib/screens/onboarding/onboarding_screen.dart +++ b/lib/screens/onboarding/onboarding_screen.dart @@ -87,7 +87,7 @@ class _OnboardingScreenState extends State { ), boxShadow: [ BoxShadow( - color: Colors.green.withOpacity(0.3), + color: Colors.green.withValues(alpha:0.3), blurRadius: 20, spreadRadius: 5, ), @@ -144,7 +144,7 @@ class _OnboardingScreenState extends State { : Theme.of(context) .colorScheme .onSurfaceVariant - .withOpacity(0.5), + .withValues(alpha:0.5), ), ), ), diff --git a/lib/screens/profile/edit_profile_screen.dart b/lib/screens/profile/edit_profile_screen.dart index acd4958..f5b3b52 100644 --- a/lib/screens/profile/edit_profile_screen.dart +++ b/lib/screens/profile/edit_profile_screen.dart @@ -167,7 +167,7 @@ class _EditProfileScreenState extends State { color: Theme.of(context) .colorScheme .shadow - .withOpacity(0.2), + .withValues(alpha:0.2), blurRadius: 10, offset: const Offset(0, 5), ), @@ -254,8 +254,8 @@ class _EditProfileScreenState extends State { padding: const EdgeInsets.all(8), decoration: BoxDecoration( color: widget.userProfile['role'] == 'admin' - ? Colors.orange.withOpacity(0.1) - : Colors.blue.withOpacity(0.1), + ? Colors.orange.withValues(alpha:0.1) + : Colors.blue.withValues(alpha:0.1), shape: BoxShape.circle, ), child: Icon( diff --git a/lib/screens/profile/profile_screen.dart b/lib/screens/profile/profile_screen.dart index 00ca35d..c57dab6 100644 --- a/lib/screens/profile/profile_screen.dart +++ b/lib/screens/profile/profile_screen.dart @@ -185,7 +185,7 @@ class _ProfileScreenState extends State { // Dot pattern background CustomPaint( painter: DotPatternPainter( - color: Colors.white.withOpacity(0.1), + color: Colors.white.withValues(alpha:0.1), ), size: MediaQuery.of(context).size, ), @@ -210,7 +210,7 @@ class _ProfileScreenState extends State { color: Theme.of(context) .colorScheme .shadow - .withOpacity(0.2), + .withValues(alpha:0.2), blurRadius: 10, offset: const Offset(0, 5), ), @@ -453,7 +453,7 @@ class _ProfileScreenState extends State { borderRadius: BorderRadius.circular(20), boxShadow: [ BoxShadow( - color: colorScheme.shadow.withOpacity(0.1), + color: colorScheme.shadow.withValues(alpha:0.1), blurRadius: 10, offset: const Offset(0, 5), ), @@ -547,7 +547,7 @@ class _ProfileScreenState extends State { borderRadius: BorderRadius.circular(20), boxShadow: [ BoxShadow( - color: colorScheme.shadow.withOpacity(0.1), + color: colorScheme.shadow.withValues(alpha:0.1), blurRadius: 10, offset: const Offset(0, 5), ), @@ -603,7 +603,7 @@ class _ProfileScreenState extends State { Container( padding: const EdgeInsets.all(12), decoration: BoxDecoration( - color: color.withOpacity(0.1), + color: color.withValues(alpha:0.1), shape: BoxShape.circle, ), child: Text( @@ -826,7 +826,7 @@ class _ProfileScreenState extends State { leading: Container( padding: const EdgeInsets.all(8), decoration: BoxDecoration( - color: Colors.purple.shade400.withOpacity(0.1), + color: Colors.purple.shade400.withValues(alpha:0.1), shape: BoxShape.circle, ), child: Icon(Icons.dark_mode_outlined, color: Colors.purple.shade400), @@ -862,7 +862,7 @@ class _ProfileScreenState extends State { leading: Container( padding: const EdgeInsets.all(8), decoration: BoxDecoration( - color: iconColor.withOpacity(0.1), + color: iconColor.withValues(alpha:0.1), shape: BoxShape.circle, ), child: Icon(icon, color: iconColor), @@ -897,7 +897,7 @@ class _ProfileScreenState extends State { leading: Container( padding: const EdgeInsets.all(8), decoration: BoxDecoration( - color: iconColor.withOpacity(0.1), + color: iconColor.withValues(alpha:0.1), shape: BoxShape.circle, ), child: Icon(icon, color: iconColor), diff --git a/lib/screens/profile/team_members_screen.dart b/lib/screens/profile/team_members_screen.dart index 401af07..24d434a 100644 --- a/lib/screens/profile/team_members_screen.dart +++ b/lib/screens/profile/team_members_screen.dart @@ -180,8 +180,8 @@ class _TeamMembersScreenState extends State { const EdgeInsets.symmetric(horizontal: 8, vertical: 2), decoration: BoxDecoration( color: role == 'admin' - ? Colors.orange.shade400.withOpacity(0.2) - : Colors.blue.shade400.withOpacity(0.2), + ? Colors.orange.shade400.withValues(alpha:0.2) + : Colors.blue.shade400.withValues(alpha:0.2), borderRadius: BorderRadius.circular(12), ), child: Text( diff --git a/lib/screens/splash_screen.dart b/lib/screens/splash_screen.dart index e2e83a4..8079574 100644 --- a/lib/screens/splash_screen.dart +++ b/lib/screens/splash_screen.dart @@ -117,7 +117,7 @@ class _SplashScreenState extends State ), boxShadow: [ BoxShadow( - color: Colors.green.withOpacity(0.3), + color: Colors.green.withValues(alpha:0.3), blurRadius: 20, spreadRadius: 5, ), diff --git a/lib/screens/tasks/task_detail_screen.dart b/lib/screens/tasks/task_detail_screen.dart index 3d50ab4..d1cb42c 100644 --- a/lib/screens/tasks/task_detail_screen.dart +++ b/lib/screens/tasks/task_detail_screen.dart @@ -388,7 +388,7 @@ class _TaskDetailScreenState extends State { color: Theme.of(context) .colorScheme .shadow - .withOpacity(0.1), + .withValues(alpha:0.1), blurRadius: 10, offset: const Offset(0, 5), ), @@ -406,7 +406,7 @@ class _TaskDetailScreenState extends State { vertical: 6, ), decoration: BoxDecoration( - color: statusColor.withOpacity(0.1), + color: statusColor.withValues(alpha:0.1), borderRadius: BorderRadius.circular(20), border: Border.all(color: statusColor), ), @@ -438,7 +438,7 @@ class _TaskDetailScreenState extends State { vertical: 6, ), decoration: BoxDecoration( - color: approvalColor.withOpacity(0.1), + color: approvalColor.withValues(alpha:0.1), borderRadius: BorderRadius.circular(20), border: Border.all(color: approvalColor), ), @@ -814,7 +814,7 @@ class _TaskDetailScreenState extends State { color: Theme.of(context).colorScheme.surface, boxShadow: [ BoxShadow( - color: Theme.of(context).colorScheme.shadow.withOpacity(0.2), + color: Theme.of(context).colorScheme.shadow.withValues(alpha:0.2), blurRadius: 10, offset: const Offset(0, -5), ), diff --git a/lib/screens/tasks/task_screen.dart b/lib/screens/tasks/task_screen.dart index f0cdbdd..44c2d10 100644 --- a/lib/screens/tasks/task_screen.dart +++ b/lib/screens/tasks/task_screen.dart @@ -381,9 +381,9 @@ class _TaskScreenState extends State { return Container( decoration: BoxDecoration( color: isSelected - ? color.withOpacity(0.2) + ? color.withValues(alpha:0.2) : candidateData.isNotEmpty - ? color.withOpacity(0.1) + ? color.withValues(alpha:0.1) : Colors.transparent, borderRadius: BorderRadius.circular(20), border: Border.all( @@ -410,13 +410,15 @@ class _TaskScreenState extends State { ), ); }, - onAccept: (task) { + onAcceptWithDetails: (details) { + final data = details.data; final newStatus = status['id'] as String; - if (task['status'] != newStatus) { - _updateTaskStatus(task['id'], newStatus); + + if (data['status'] != newStatus) { + _updateTaskStatus(data['id'], newStatus); } - }, - onWillAccept: (data) => data != null, + }, + onWillAcceptWithDetails: (details) => details.data != null, ), ); }).toList(), @@ -609,7 +611,7 @@ class _TaskCard extends StatelessWidget { borderRadius: BorderRadius.circular(16), boxShadow: [ BoxShadow( - color: Theme.of(context).colorScheme.shadow.withOpacity(0.1), + color: Theme.of(context).colorScheme.shadow.withValues(alpha:0.1), blurRadius: 10, offset: const Offset(0, 5), ), @@ -621,7 +623,7 @@ class _TaskCard extends StatelessWidget { Container( padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12), decoration: BoxDecoration( - color: statusColor.withOpacity(0.1), + color: statusColor.withValues(alpha:0.1), borderRadius: const BorderRadius.only( topLeft: Radius.circular(16), topRight: Radius.circular(16), @@ -819,7 +821,7 @@ class _TaskCard extends StatelessWidget { padding: const EdgeInsets.symmetric( horizontal: 8, vertical: 4), decoration: BoxDecoration( - color: approvalColor.withOpacity(0.1), + color: approvalColor.withValues(alpha:0.1), borderRadius: BorderRadius.circular(12), ), child: Text( diff --git a/lib/screens/tickets/create_ticket_screen.dart b/lib/screens/tickets/create_ticket_screen.dart index 2455b46..674bf06 100644 --- a/lib/screens/tickets/create_ticket_screen.dart +++ b/lib/screens/tickets/create_ticket_screen.dart @@ -337,7 +337,7 @@ class _CreateTicketScreenState extends State { ), decoration: BoxDecoration( color: Colors.orange.shade400 - .withOpacity(0.2), + .withValues(alpha:0.2), borderRadius: BorderRadius.circular(8), ), child: Text( @@ -413,7 +413,7 @@ class _CreateTicketScreenState extends State { padding: const EdgeInsets.symmetric(vertical: 12), decoration: BoxDecoration( color: isSelected - ? color.withOpacity(0.2) + ? color.withValues(alpha:0.2) : Theme.of(context).colorScheme.surface, borderRadius: BorderRadius.circular(12), border: Border.all( diff --git a/lib/screens/tickets/ticket_detail_screen.dart b/lib/screens/tickets/ticket_detail_screen.dart index e6c0754..1cf8512 100644 --- a/lib/screens/tickets/ticket_detail_screen.dart +++ b/lib/screens/tickets/ticket_detail_screen.dart @@ -648,7 +648,7 @@ class _TicketDetailScreenState extends State { padding: const EdgeInsets.symmetric( horizontal: 8, vertical: 4), decoration: BoxDecoration( - color: priorityColor.withOpacity(0.2), + color: priorityColor.withValues(alpha:0.2), borderRadius: BorderRadius.circular(12), ), child: Row( @@ -676,7 +676,7 @@ class _TicketDetailScreenState extends State { padding: const EdgeInsets.symmetric( horizontal: 8, vertical: 4), decoration: BoxDecoration( - color: statusColor.withOpacity(0.2), + color: statusColor.withValues(alpha:0.2), borderRadius: BorderRadius.circular(12), ), child: Text( @@ -693,7 +693,7 @@ class _TicketDetailScreenState extends State { padding: const EdgeInsets.symmetric( horizontal: 8, vertical: 4), decoration: BoxDecoration( - color: approvalColor.withOpacity(0.2), + color: approvalColor.withValues(alpha:0.2), borderRadius: BorderRadius.circular(12), ), child: Row( @@ -721,7 +721,7 @@ class _TicketDetailScreenState extends State { padding: const EdgeInsets.symmetric( horizontal: 8, vertical: 4), decoration: BoxDecoration( - color: Colors.purple.withOpacity(0.2), + color: Colors.purple.withValues(alpha:0.2), borderRadius: BorderRadius.circular(12), ), child: Text( diff --git a/lib/screens/tickets/ticket_screen.dart b/lib/screens/tickets/ticket_screen.dart index 33cb38b..7b655a7 100644 --- a/lib/screens/tickets/ticket_screen.dart +++ b/lib/screens/tickets/ticket_screen.dart @@ -328,9 +328,9 @@ class _TicketScreenState extends State { return Container( decoration: BoxDecoration( color: isSelected - ? color.withOpacity(0.2) + ? color.withValues(alpha:0.2) : candidateData.isNotEmpty - ? color.withOpacity(0.1) + ? color.withValues(alpha:0.1) : Colors.transparent, borderRadius: BorderRadius.circular(20), border: Border.all( @@ -357,13 +357,15 @@ class _TicketScreenState extends State { ), ); }, - onAccept: (ticket) { + onAcceptWithDetails: (details) { + final data = details.data; final newStatus = status['id'] as String; - if (ticket['status'] != newStatus) { - _updateTicketStatus(ticket['id'], newStatus); + + if (data['status'] != newStatus) { + _updateTicketStatus(data['id'], newStatus); } }, - onWillAccept: (data) => data != null, + onWillAcceptWithDetails: (details) => details.data != null, ), ); }).toList(), @@ -632,7 +634,7 @@ class _TicketCard extends StatelessWidget { borderRadius: BorderRadius.circular(16), boxShadow: [ BoxShadow( - color: Theme.of(context).colorScheme.shadow.withOpacity(0.1), + color: Theme.of(context).colorScheme.shadow.withValues(alpha:0.1), blurRadius: 10, offset: const Offset(0, 5), ), @@ -644,7 +646,7 @@ class _TicketCard extends StatelessWidget { Container( padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12), decoration: BoxDecoration( - color: priorityColor.withOpacity(0.1), + color: priorityColor.withValues(alpha:0.1), borderRadius: const BorderRadius.only( topLeft: Radius.circular(16), topRight: Radius.circular(16), @@ -843,7 +845,7 @@ class _TicketCard extends StatelessWidget { padding: const EdgeInsets.symmetric( horizontal: 8, vertical: 4), decoration: BoxDecoration( - color: approvalColor.withOpacity(0.1), + color: approvalColor.withValues(alpha:0.1), borderRadius: BorderRadius.circular(12), ), child: Text( @@ -874,7 +876,7 @@ class _TicketCard extends StatelessWidget { padding: const EdgeInsets.symmetric( horizontal: 8, vertical: 4), decoration: BoxDecoration( - color: Colors.purple.withOpacity(0.2), + color: Colors.purple.withValues(alpha:0.2), borderRadius: BorderRadius.circular(12), ), child: Row( diff --git a/lib/widgets/custom_widgets.dart b/lib/widgets/custom_widgets.dart index 7075bb4..1c91cc4 100644 --- a/lib/widgets/custom_widgets.dart +++ b/lib/widgets/custom_widgets.dart @@ -380,7 +380,7 @@ class DashboardLoadingSkeleton extends StatelessWidget { width: 40, height: 40, decoration: BoxDecoration( - color: Colors.green.withOpacity(0.2), + color: Colors.green.withValues(alpha:0.2), borderRadius: BorderRadius.circular(8), ), child: const Icon(Icons.task_alt, color: Colors.green), @@ -411,7 +411,7 @@ class DashboardLoadingSkeleton extends StatelessWidget { Container( padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4), decoration: BoxDecoration( - color: Colors.orange.withOpacity(0.2), + color: Colors.orange.withValues(alpha:0.2), borderRadius: BorderRadius.circular(12), ), child: const Text( @@ -490,7 +490,7 @@ class DashboardLoadingSkeleton extends StatelessWidget { Container( padding: const EdgeInsets.all(12), decoration: BoxDecoration( - color: Colors.green.withOpacity(0.1), + color: Colors.green.withValues(alpha:0.1), borderRadius: BorderRadius.circular(8), ), child: Row( @@ -620,7 +620,7 @@ class WorkspaceLoadingSkeleton extends StatelessWidget { Container( padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 6), decoration: BoxDecoration( - color: Colors.green.withOpacity(0.2), + color: Colors.green.withValues(alpha:0.2), borderRadius: BorderRadius.circular(20), ), child: const Row( @@ -699,7 +699,7 @@ class WorkspaceLoadingSkeleton extends StatelessWidget { padding: const EdgeInsets.symmetric(vertical: 12), margin: const EdgeInsets.symmetric(horizontal: 4), decoration: BoxDecoration( - color: isSelected ? Colors.green.withOpacity(0.2) : cardColor, + color: isSelected ? Colors.green.withValues(alpha:0.2) : cardColor, borderRadius: BorderRadius.circular(12), ), alignment: Alignment.center, @@ -730,7 +730,7 @@ class WorkspaceLoadingSkeleton extends StatelessWidget { Container( padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4), decoration: BoxDecoration( - color: Colors.blue.withOpacity(0.2), + color: Colors.blue.withValues(alpha:0.2), borderRadius: BorderRadius.circular(8), ), child: const Text( @@ -745,7 +745,7 @@ class WorkspaceLoadingSkeleton extends StatelessWidget { Container( padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4), decoration: BoxDecoration( - color: Colors.orange.withOpacity(0.2), + color: Colors.orange.withValues(alpha:0.2), borderRadius: BorderRadius.circular(8), ), child: const Text( @@ -905,7 +905,7 @@ class CalendarLoadingSkeleton extends StatelessWidget { width: 36, height: 36, decoration: BoxDecoration( - color: isSelected ? Colors.green.withOpacity(0.2) : Colors.transparent, + color: isSelected ? Colors.green.withValues(alpha:0.2) : Colors.transparent, shape: BoxShape.circle, ), alignment: Alignment.center, @@ -1000,14 +1000,14 @@ class CalendarLoadingSkeleton extends StatelessWidget { decoration: BoxDecoration( color: cardColor, borderRadius: BorderRadius.circular(8), - border: Border.all(color: eventColor.withOpacity(0.3), width: 1), + border: Border.all(color: eventColor.withValues(alpha:0.3), width: 1), ), child: Row( children: [ Container( padding: const EdgeInsets.all(8), decoration: BoxDecoration( - color: eventColor.withOpacity(0.2), + color: eventColor.withValues(alpha:0.2), borderRadius: BorderRadius.circular(8), ), child: Icon(eventIcon, color: eventColor, size: 16), diff --git a/linux/flutter/generated_plugin_registrant.cc b/linux/flutter/generated_plugin_registrant.cc index 3792af4..1a9d148 100644 --- a/linux/flutter/generated_plugin_registrant.cc +++ b/linux/flutter/generated_plugin_registrant.cc @@ -7,12 +7,16 @@ #include "generated_plugin_registrant.h" #include +#include #include void fl_register_plugins(FlPluginRegistry* registry) { g_autoptr(FlPluginRegistrar) gtk_registrar = fl_plugin_registry_get_registrar_for_plugin(registry, "GtkPlugin"); gtk_plugin_register_with_registrar(gtk_registrar); + g_autoptr(FlPluginRegistrar) printing_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "PrintingPlugin"); + printing_plugin_register_with_registrar(printing_registrar); g_autoptr(FlPluginRegistrar) url_launcher_linux_registrar = fl_plugin_registry_get_registrar_for_plugin(registry, "UrlLauncherPlugin"); url_launcher_plugin_register_with_registrar(url_launcher_linux_registrar); diff --git a/linux/flutter/generated_plugins.cmake b/linux/flutter/generated_plugins.cmake index 5d07423..1db2f43 100644 --- a/linux/flutter/generated_plugins.cmake +++ b/linux/flutter/generated_plugins.cmake @@ -4,6 +4,7 @@ list(APPEND FLUTTER_PLUGIN_LIST gtk + printing url_launcher_linux ) diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index 92b6497..31015f4 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -6,13 +6,19 @@ import FlutterMacOS import Foundation import app_links +import google_sign_in_ios import path_provider_foundation +import printing import shared_preferences_foundation +import speech_to_text_macos import url_launcher_macos func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { AppLinksMacosPlugin.register(with: registry.registrar(forPlugin: "AppLinksMacosPlugin")) + FLTGoogleSignInPlugin.register(with: registry.registrar(forPlugin: "FLTGoogleSignInPlugin")) PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) + PrintingPlugin.register(with: registry.registrar(forPlugin: "PrintingPlugin")) SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) + SpeechToTextMacosPlugin.register(with: registry.registrar(forPlugin: "SpeechToTextMacosPlugin")) UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin")) } diff --git a/pubspec.lock b/pubspec.lock index 2d3a236..f1d4e27 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1,6 +1,14 @@ # Generated by pub # See https://dart.dev/tools/pub/glossary#lockfile packages: + _discoveryapis_commons: + dependency: transitive + description: + name: _discoveryapis_commons + sha256: "113c4100b90a5b70a983541782431b82168b3cae166ab130649c36eb3559d498" + url: "https://pub.dev" + source: hosted + version: "1.0.7" adaptive_number: dependency: transitive description: @@ -97,22 +105,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.4.0" - checked_yaml: - dependency: transitive - description: - name: checked_yaml - sha256: "959525d3162f249993882720d52b7e0c833978df229be20702b33d48d91de70f" - url: "https://pub.dev" - source: hosted - version: "2.0.4" - cli_util: - dependency: transitive - description: - name: cli_util - sha256: ff6785f7e9e3c38ac98b2fb035701789de90154024a75b6cb926445e83197d1c - url: "https://pub.dev" - source: hosted - version: "0.4.2" clock: dependency: transitive description: @@ -230,14 +222,6 @@ packages: url: "https://pub.dev" source: hosted version: "5.2.1" - flutter_launcher_icons: - dependency: "direct dev" - description: - name: flutter_launcher_icons - sha256: "526faf84284b86a4cb36d20a5e45147747b7563d921373d4ee0559c54fcdbcea" - url: "https://pub.dev" - source: hosted - version: "0.13.1" flutter_lints: dependency: "direct dev" description: @@ -272,6 +256,70 @@ packages: url: "https://pub.dev" source: hosted version: "2.5.0" + google_identity_services_web: + dependency: transitive + description: + name: google_identity_services_web + sha256: "5d187c46dc59e02646e10fe82665fc3884a9b71bc1c90c2b8b749316d33ee454" + url: "https://pub.dev" + source: hosted + version: "0.3.3+1" + google_sign_in: + dependency: "direct main" + description: + name: google_sign_in + sha256: d0a2c3bcb06e607bb11e4daca48bd4b6120f0bbc4015ccebbe757d24ea60ed2a + url: "https://pub.dev" + source: hosted + version: "6.3.0" + google_sign_in_android: + dependency: transitive + description: + name: google_sign_in_android + sha256: d5e23c56a4b84b6427552f1cf3f98f716db3b1d1a647f16b96dbb5b93afa2805 + url: "https://pub.dev" + source: hosted + version: "6.2.1" + google_sign_in_ios: + dependency: transitive + description: + name: google_sign_in_ios + sha256: "102005f498ce18442e7158f6791033bbc15ad2dcc0afa4cf4752e2722a516c96" + url: "https://pub.dev" + source: hosted + version: "5.9.0" + google_sign_in_platform_interface: + dependency: transitive + description: + name: google_sign_in_platform_interface + sha256: "5f6f79cf139c197261adb6ac024577518ae48fdff8e53205c5373b5f6430a8aa" + url: "https://pub.dev" + source: hosted + version: "2.5.0" + google_sign_in_web: + dependency: transitive + description: + name: google_sign_in_web + sha256: "460547beb4962b7623ac0fb8122d6b8268c951cf0b646dd150d60498430e4ded" + url: "https://pub.dev" + source: hosted + version: "0.12.4+4" + googleapis: + dependency: "direct main" + description: + name: googleapis + sha256: "864f222aed3f2ff00b816c675edf00a39e2aaf373d728d8abec30b37bee1a81c" + url: "https://pub.dev" + source: hosted + version: "13.2.0" + googleapis_auth: + dependency: "direct main" + description: + name: googleapis_auth + sha256: befd71383a955535060acde8792e7efc11d2fccd03dd1d3ec434e85b68775938 + url: "https://pub.dev" + source: hosted + version: "1.6.0" gotrue: dependency: transitive description: @@ -320,6 +368,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.19.0" + js: + dependency: transitive + description: + name: js + sha256: "53385261521cc4a0c4658fd0ad07a7d14591cf8fc33abbceae306ddb974888dc" + url: "https://pub.dev" + source: hosted + version: "0.7.2" json_annotation: dependency: transitive description: @@ -416,6 +472,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.0.0" + nested: + dependency: transitive + description: + name: nested + sha256: "03bac4c528c64c95c722ec99280375a6f2fc708eec17c7b3f07253b626cd2a20" + url: "https://pub.dev" + source: hosted + version: "1.0.0" path: dependency: transitive description: @@ -608,6 +672,14 @@ packages: url: "https://pub.dev" source: hosted version: "5.14.2" + provider: + dependency: "direct main" + description: + name: provider + sha256: "4e82183fa20e5ca25703ead7e05de9e4cceed1fbd1eadc1ac3cb6f565a09f272" + url: "https://pub.dev" + source: hosted + version: "6.1.5+1" qr: dependency: transitive description: @@ -729,26 +801,26 @@ packages: dependency: "direct main" description: name: speech_to_text - sha256: c07557664974afa061f221d0d4186935bea4220728ea9446702825e8b988db04 + sha256: "97425fd8cc60424061a0584b6c418c0eedab5201cc5e96ef15a946d7fab7b9b7" url: "https://pub.dev" source: hosted - version: "7.3.0" - speech_to_text_platform_interface: + version: "6.6.2" + speech_to_text_macos: dependency: transitive description: - name: speech_to_text_platform_interface - sha256: a1935847704e41ee468aad83181ddd2423d0833abe55d769c59afca07adb5114 + name: speech_to_text_macos + sha256: e685750f7542fcaa087a5396ee471e727ec648bf681f4da83c84d086322173f6 url: "https://pub.dev" source: hosted - version: "2.3.0" - speech_to_text_windows: + version: "1.1.0" + speech_to_text_platform_interface: dependency: transitive description: - name: speech_to_text_windows - sha256: "2c9846d18253c7bbe059a276297ef9f27e8a2745dead32192525beb208195072" + name: speech_to_text_platform_interface + sha256: a1935847704e41ee468aad83181ddd2423d0833abe55d769c59afca07adb5114 url: "https://pub.dev" source: hosted - version: "1.0.0+beta.8" + version: "2.3.0" stack_trace: dependency: transitive description: @@ -958,5 +1030,5 @@ packages: source: hosted version: "2.1.0" sdks: - dart: ">=3.8.0 <=3.8.1" + dart: ">=3.8.0 <4.0.0" flutter: ">=3.32.0" diff --git a/pubspec.yaml b/pubspec.yaml index b485464..7dfd8a5 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,37 +1,17 @@ name: ell_ena description: "A new Flutter project." -# The following line prevents the package from being accidentally published to -# pub.dev using `flutter pub publish`. This is preferred for private packages. -publish_to: "none" # Remove this line if you wish to publish to pub.dev +publish_to: "none" -# The following defines the version and build number for your application. -# A version number is three numbers separated by dots, like 1.2.43 -# followed by an optional build number separated by a +. -# Both the version and the builder number may be overridden in flutter -# build by specifying --build-name and --build-number, respectively. -# In Android, build-name is used as versionName while build-number used as versionCode. -# Read more about Android versioning at https://developer.android.com/studio/publish/versioning -# In iOS, build-name is used as CFBundleShortVersionString while build-number is used as CFBundleVersion. -# Read more about iOS versioning at -# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html -# In Windows, build-name is used as the major, minor, and patch parts -# of the product and file versions while build-number is used as the build suffix. version: 1.0.0+1 +# ✅ FIXED SDK (IMPORTANT) environment: - sdk: '>=2.17.0 <4.0.0' -# Dependencies specify other packages that your package needs in order to work. -# To automatically upgrade your package dependencies to the latest versions -# consider running `flutter pub upgrade --major-versions`. Alternatively, -# dependencies can be manually updated by changing the version numbers below to -# the latest version available on pub.dev. To see which dependencies have newer -# versions available, run `flutter pub outdated`. + sdk: '^3.8.0' + dependencies: flutter: sdk: flutter - # The following adds the Cupertino Icons font to your application. - # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 fl_chart: ^0.66.2 table_calendar: ^3.1.0 @@ -65,7 +45,8 @@ dependencies: printing: ^5.13.1 permission_handler: ^11.3.1 - speech_to_text: ^7.3.0 + # ✅ Speech (correct) + speech_to_text: ^6.6.0 google_sign_in: ^6.2.1 googleapis: ^13.1.0 @@ -74,66 +55,4 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - - # Launcher icons - flutter_launcher_icons: ^0.13.1 - - # The "flutter_lints" package below contains a set of recommended lints to - # encourage good coding practices. The lint set provided by the package is - # activated in the `analysis_options.yaml` file located at the root of your - # package. See that file for information about deactivating specific lint - # rules and activating additional ones. - flutter_lints: ^5.0.0 - -# For information on the generic Dart part of this file, see the -# following page: https://dart.dev/tools/pub/pubspec - -# The following section is specific to Flutter packages. -flutter: - # The following line ensures that the Material Icons font is - # included with your application, so that you can use the icons in - # the material Icons class. - uses-material-design: true - - # To add assets to your application, add an assets section, like this: - assets: - - .env - - ELL-ena-logo/png/ - - ELL-ena-logo/svg/ - # assets: - # - images/a_dot_burr.jpeg - # - images/a_dot_ham.jpeg - - # An image asset can refer to one or more resolution-specific "variants", see - # https://flutter.dev/to/resolution-aware-images - - # For details regarding adding assets from package dependencies, see - # https://flutter.dev/to/asset-from-package - - # To add custom fonts to your application, add a fonts section here, - # in this "flutter" section. Each entry in this list should have a - # "family" key with the font family name, and a "fonts" key with a - # list giving the asset and other descriptors for the font. For - # example: - # fonts: - # - family: Schyler - # fonts: - # - asset: fonts/Schyler-Regular.ttf - # - asset: fonts/Schyler-Italic.ttf - # style: italic - # - family: Trajan Pro - # fonts: - # - asset: fonts/TrajanPro.ttf - # - asset: fonts/TrajanPro_Bold.ttf - # weight: 700 - # - # For details regarding fonts from package dependencies, - # see https://flutter.dev/to/font-from-package - -# Flutter Launcher Icons configuration -flutter_launcher_icons: - android: true - ios: true - image_path: "ELL-ena-logo/png/logo-removed-bg-bigger.png" - adaptive_icon_background: "#1A1A1A" - adaptive_icon_foreground: "ELL-ena-logo/png/logo-removed-bg-bigger.png" + flutter_lints: ^5.0.0 \ No newline at end of file diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc index 785a046..48ca0df 100644 --- a/windows/flutter/generated_plugin_registrant.cc +++ b/windows/flutter/generated_plugin_registrant.cc @@ -7,11 +7,17 @@ #include "generated_plugin_registrant.h" #include +#include +#include #include void RegisterPlugins(flutter::PluginRegistry* registry) { AppLinksPluginCApiRegisterWithRegistrar( registry->GetRegistrarForPlugin("AppLinksPluginCApi")); + PermissionHandlerWindowsPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("PermissionHandlerWindowsPlugin")); + PrintingPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("PrintingPlugin")); UrlLauncherWindowsRegisterWithRegistrar( registry->GetRegistrarForPlugin("UrlLauncherWindows")); } diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake index 8f8ee4f..4aa617f 100644 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -4,6 +4,8 @@ list(APPEND FLUTTER_PLUGIN_LIST app_links + permission_handler_windows + printing url_launcher_windows )