added test button and share provider to app

This commit is contained in:
Kima 2023-09-08 21:04:54 +02:00
parent 991097fa34
commit 070e3cf18c
3 changed files with 74 additions and 36 deletions

View File

@ -14,6 +14,7 @@ import 'package:filcnaplo/theme/theme.dart';
import 'package:filcnaplo_kreta_api/client/client.dart'; import 'package:filcnaplo_kreta_api/client/client.dart';
import 'package:filcnaplo_kreta_api/providers/grade_provider.dart'; import 'package:filcnaplo_kreta_api/providers/grade_provider.dart';
import 'package:filcnaplo_premium/providers/goal_provider.dart'; import 'package:filcnaplo_premium/providers/goal_provider.dart';
import 'package:filcnaplo_premium/providers/share_provider.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@ -99,14 +100,19 @@ class App extends StatelessWidget {
Provider<KretaClient>(create: (_) => kreta), Provider<KretaClient>(create: (_) => kreta),
Provider<DatabaseProvider>(create: (context) => database), Provider<DatabaseProvider>(create: (context) => database),
ChangeNotifierProvider<ThemeModeObserver>( ChangeNotifierProvider<ThemeModeObserver>(
create: (context) => create: (context) => ThemeModeObserver(
ThemeModeObserver(initialTheme: settings.theme)), initialTheme: settings.theme,
),
),
ChangeNotifierProvider<NewsProvider>( ChangeNotifierProvider<NewsProvider>(
create: (context) => NewsProvider(context: context)), create: (context) => NewsProvider(context: context),
),
ChangeNotifierProvider<UpdateProvider>( ChangeNotifierProvider<UpdateProvider>(
create: (context) => UpdateProvider(context: context)), create: (context) => UpdateProvider(context: context),
),
ChangeNotifierProvider<AdProvider>( ChangeNotifierProvider<AdProvider>(
create: (context) => AdProvider(context: context)), create: (context) => AdProvider(context: context),
),
// user data (kreten) providers // user data (kreten) providers
ChangeNotifierProvider<GradeProvider>( ChangeNotifierProvider<GradeProvider>(
@ -114,21 +120,31 @@ class App extends StatelessWidget {
settings: settings, settings: settings,
user: user, user: user,
database: database, database: database,
kreta: kreta)), kreta: kreta,
),
),
ChangeNotifierProvider<TimetableProvider>(create: (_) => timetable), ChangeNotifierProvider<TimetableProvider>(create: (_) => timetable),
ChangeNotifierProvider<ExamProvider>( ChangeNotifierProvider<ExamProvider>(
create: (context) => ExamProvider(context: context)), create: (context) => ExamProvider(context: context),
),
ChangeNotifierProvider<HomeworkProvider>( ChangeNotifierProvider<HomeworkProvider>(
create: (context) => create: (context) => HomeworkProvider(
HomeworkProvider(context: context, database: database)), context: context,
database: database,
),
),
ChangeNotifierProvider<MessageProvider>( ChangeNotifierProvider<MessageProvider>(
create: (context) => MessageProvider(context: context)), create: (context) => MessageProvider(context: context),
),
ChangeNotifierProvider<NoteProvider>( ChangeNotifierProvider<NoteProvider>(
create: (context) => NoteProvider(context: context)), create: (context) => NoteProvider(context: context),
),
ChangeNotifierProvider<EventProvider>( ChangeNotifierProvider<EventProvider>(
create: (context) => EventProvider(context: context)), create: (context) => EventProvider(context: context),
),
ChangeNotifierProvider<AbsenceProvider>( ChangeNotifierProvider<AbsenceProvider>(
create: (context) => AbsenceProvider(context: context)), create: (context) => AbsenceProvider(context: context),
),
// other providers // other providers
ChangeNotifierProvider<GradeCalculatorProvider>( ChangeNotifierProvider<GradeCalculatorProvider>(
@ -136,12 +152,26 @@ class App extends StatelessWidget {
settings: settings, settings: settings,
user: user, user: user,
database: database, database: database,
kreta: kreta)), kreta: kreta,
),
),
ChangeNotifierProvider<LiveCardProvider>( ChangeNotifierProvider<LiveCardProvider>(
create: (context) => create: (context) => LiveCardProvider(
LiveCardProvider(timetable: timetable, settings: settings)), timetable: timetable,
settings: settings,
),
),
ChangeNotifierProvider<GoalProvider>( ChangeNotifierProvider<GoalProvider>(
create: (context) => GoalProvider(database: database, user: user)), create: (context) => GoalProvider(
database: database,
user: user,
),
),
ChangeNotifierProvider<ShareProvider>(
create: (context) => ShareProvider(
user: user,
),
),
], ],
child: Consumer<ThemeModeObserver>( child: Consumer<ThemeModeObserver>(
builder: (context, themeMode, child) { builder: (context, themeMode, child) {

View File

@ -17,7 +17,7 @@ class ShareProvider extends ChangeNotifier {
// Future<void> shareTheme({required SharedTheme theme}) async { // Future<void> shareTheme({required SharedTheme theme}) async {
// } // }
Future<void> shareCurrentTheme(BuildContext context, Future<SharedTheme> shareCurrentTheme(BuildContext context,
{bool isPublic = false, bool shareNick = true}) async { {bool isPublic = false, bool shareNick = true}) async {
final SettingsProvider settings = Provider.of<SettingsProvider>(context); final SettingsProvider settings = Provider.of<SettingsProvider>(context);
@ -37,7 +37,8 @@ class ShareProvider extends ChangeNotifier {
}; };
SharedTheme theme = SharedTheme.fromJson(themeJson); SharedTheme theme = SharedTheme.fromJson(themeJson);
FilcAPI.addSharedTheme(theme); FilcAPI.addSharedTheme(theme);
return theme;
} }
} }

View File

@ -1,4 +1,5 @@
import 'package:filcnaplo/models/settings.dart'; import 'package:filcnaplo/models/settings.dart';
import 'package:filcnaplo/models/shared_theme.dart';
import 'package:filcnaplo/theme/colors/accent.dart'; import 'package:filcnaplo/theme/colors/accent.dart';
import 'package:filcnaplo/theme/colors/colors.dart'; import 'package:filcnaplo/theme/colors/colors.dart';
import 'package:filcnaplo/theme/observer.dart'; import 'package:filcnaplo/theme/observer.dart';
@ -13,6 +14,7 @@ import 'package:filcnaplo_mobile_ui/common/widgets/grade/new_grades.dart';
import 'package:filcnaplo_mobile_ui/common/widgets/homework/homework_tile.dart'; import 'package:filcnaplo_mobile_ui/common/widgets/homework/homework_tile.dart';
import 'package:filcnaplo_premium/models/premium_scopes.dart'; import 'package:filcnaplo_premium/models/premium_scopes.dart';
import 'package:filcnaplo_premium/providers/premium_provider.dart'; import 'package:filcnaplo_premium/providers/premium_provider.dart';
import 'package:filcnaplo_premium/providers/share_provider.dart';
import 'package:filcnaplo_premium/ui/mobile/flutter_colorpicker/colorpicker.dart'; import 'package:filcnaplo_premium/ui/mobile/flutter_colorpicker/colorpicker.dart';
import 'package:filcnaplo_premium/ui/mobile/premium/upsell.dart'; import 'package:filcnaplo_premium/ui/mobile/premium/upsell.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@ -35,6 +37,7 @@ class _PremiumCustomAccentColorSettingState
extends State<PremiumCustomAccentColorSetting> extends State<PremiumCustomAccentColorSetting>
with TickerProviderStateMixin { with TickerProviderStateMixin {
late final SettingsProvider settings; late final SettingsProvider settings;
late final ShareProvider shareProvider;
bool colorSelection = false; bool colorSelection = false;
bool customColorMenu = false; bool customColorMenu = false;
CustomColorMode colorMode = CustomColorMode.theme; CustomColorMode colorMode = CustomColorMode.theme;
@ -99,6 +102,7 @@ class _PremiumCustomAccentColorSettingState
_colorsTabController = TabController(length: 4, vsync: this); _colorsTabController = TabController(length: 4, vsync: this);
_testTabController = TabController(length: 4, vsync: this); _testTabController = TabController(length: 4, vsync: this);
settings = Provider.of<SettingsProvider>(context, listen: false); settings = Provider.of<SettingsProvider>(context, listen: false);
shareProvider = Provider.of<ShareProvider>(context, listen: false);
_openAnimController = AnimationController( _openAnimController = AnimationController(
vsync: this, duration: const Duration(milliseconds: 750)); vsync: this, duration: const Duration(milliseconds: 750));
@ -238,15 +242,18 @@ class _PremiumCustomAccentColorSettingState
focusColor: Colors.transparent, focusColor: Colors.transparent,
highlightColor: Colors.transparent, highlightColor: Colors.transparent,
splashColor: Colors.transparent, splashColor: Colors.transparent,
onPressed: () { onPressed: () async {
ScaffoldMessenger.of(context).showSnackBar( // ScaffoldMessenger.of(context).showSnackBar(
const SnackBar( // const SnackBar(
duration: Duration(milliseconds: 1000), // duration: Duration(milliseconds: 1000),
content: Text( // content: Text(
"Hamarosan...", // "Hamarosan...",
), // ),
), // ),
); // );
SharedTheme theme =
await shareProvider.shareCurrentTheme(context);
print(theme.id);
}, },
icon: const Icon( icon: const Icon(
FeatherIcons.share2, FeatherIcons.share2,