Skip to content

Commit

Permalink
beta
Browse files Browse the repository at this point in the history
  • Loading branch information
arifayduran committed Dec 18, 2024
1 parent d7dc3af commit 1c9dcb4
Show file tree
Hide file tree
Showing 18 changed files with 591 additions and 355 deletions.
26 changes: 26 additions & 0 deletions assets/app_icons/logo_graphic_bottom_SVG.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/app_icons/logo_graphic_red_bottom.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/app_icons/logo_graphic_red_top.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
25 changes: 25 additions & 0 deletions assets/app_icons/logo_graphic_top_SVG.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/app_icons/main_light_200x200.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions lib/src/config/theme.dart
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart';

const Color effectColorDark = mainGrey; // darkBlue
const Color effectColorDark = black;
const Color effectColorLight = mainBlue;
const Color destinationColorDark = black;
const Color destinationColorDark = darkBlue;
const Color destinationColorLight = white;
Color snackBarColorDark = effectColorDark.withValues(alpha: 0.5);
Color snackBarColorLight = effectColorLight.withValues(alpha: 0.5);
Expand Down
75 changes: 47 additions & 28 deletions lib/src/core/my_app.dart
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import 'package:arifayduran_dev/src/core/application/scaffold_messenger_key.dart';
import 'package:arifayduran_dev/src/core/my_toolbar.dart';
import 'package:arifayduran_dev/src/features/projects/presentation/projects_screen.dart';
import 'package:arifayduran_dev/src/features/settings/application/controllers/language_provider.dart';
// import 'package:arifayduran_dev/src/features/settings/application/services/deactivated/routes_service.dart'; // not using since observer
Expand Down Expand Up @@ -84,35 +85,53 @@ class MyApp extends StatelessWidget {
Route<dynamic> buildPage(
{required String path, Map<String, String> queryParams = const {}}) {
return PageRouteBuilder(
settings: RouteSettings(
name: (path.startsWith('/') == false) ? '/$path' : path),
transitionDuration: const Duration(milliseconds: 500),
reverseTransitionDuration: const Duration(milliseconds: 500),
pageBuilder: (context, animation, secondaryAnimation) {
String pathName = path; // Kein `substring(1)`
// String pathName =
// path != '/' && path.startsWith('/') ? path.substring(1) : path;
return FadeTransition(
opacity: animation,
child: switch (pathName) {
'/' ||
HomeScreen.routeName =>
HomeScreen(uiModeController: uiModeController),
ProjectsScreen.routeName =>
ProjectsScreen(uiModeController: uiModeController),
"/placeholder" =>
settings: RouteSettings(
name: (path.startsWith('/') == false) ? '/$path' : path),
transitionDuration: const Duration(milliseconds: 500),
reverseTransitionDuration: const Duration(milliseconds: 500),
pageBuilder: (context, animation, secondaryAnimation) {
if (uiModeController.darkModeSet) {
Provider.of<ToolbarProvider>(context, listen: false)
.scrolledPlaceColor = effectColorDark;
} else {
Provider.of<ToolbarProvider>(context, listen: false)
.scrolledPlaceColor = effectColorLight;
}
String pathName = path; // Kein `substring(1)`
// String pathName =
// path != '/' && path.startsWith('/') ? path.substring(1) : path;

// const ResponsiveBreakpoints(breakpoints: [
// Breakpoint(start: 0, end: 480, name: MOBILE),
// Breakpoint(start: 481, end: 1200, name: TABLET),
// Breakpoint(start: 1201, end: double.infinity, name: DESKTOP),
// ], child:
const Placeholder(),
// ),
return Scaffold(
backgroundColor:
Provider.of<ToolbarProvider>(context, listen: false)
.scrolledPlaceColor,
appBar: PreferredSize(
preferredSize: Size.fromHeight(
Provider.of<ToolbarProvider>(context, listen: false)
.toolbarHeight),
child: myToolbar,
),
body: FadeTransition(
opacity: animation,
child: switch (pathName) {
'/' ||
HomeScreen.routeName =>
HomeScreen(uiModeController: uiModeController),
ProjectsScreen.routeName =>
ProjectsScreen(uiModeController: uiModeController),
"/placeholder" =>

// const ResponsiveBreakpoints(breakpoints: [
// Breakpoint(start: 0, end: 480, name: MOBILE),
// Breakpoint(start: 481, end: 1200, name: TABLET),
// Breakpoint(start: 1201, end: double.infinity, name: DESKTOP),
// ], child:
const Placeholder(),
// ),

String() => HomeScreen(uiModeController: uiModeController),
});
},
);
String() => HomeScreen(uiModeController: uiModeController),
}),
);
});
}
}
165 changes: 122 additions & 43 deletions lib/src/core/my_toolbar.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,14 @@ import 'package:arifayduran_dev/src/config/theme.dart';
import 'package:arifayduran_dev/src/features/settings/application/controllers/ui_mode_controller.dart';
import 'package:arifayduran_dev/src/features/settings/data/session_settings.dart';
import 'package:arifayduran_dev/src/features/settings/presentation/language_selector.dart';
import 'package:arifayduran_dev/src/widgets/tooltip_and_selectable.dart';
import 'package:arifayduran_dev/src/presentation/svg_color_mapper.dart';
import 'package:arifayduran_dev/src/presentation/widgets/animated_scroll_text.dart';
import 'package:arifayduran_dev/src/presentation/widgets/tooltip_and_selectable.dart';
import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:arifayduran_dev/src/features/settings/presentation/ui_mode_switch.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:google_fonts/google_fonts.dart';
import 'package:provider/provider.dart';

class ToolbarProvider extends ChangeNotifier {
Expand All @@ -31,7 +35,13 @@ class MyToolbar extends StatefulWidget {
State<MyToolbar> createState() => _MyToolbarProvider();
}

class _MyToolbarProvider extends State<MyToolbar> {
class _MyToolbarProvider extends State<MyToolbar>
with SingleTickerProviderStateMixin {
late AnimationController _controller;
late Animation<double> _heightAnimation;

double _currentHeight = 70.0;

@override
void initState() {
super.initState();
Expand All @@ -40,6 +50,49 @@ class _MyToolbarProvider extends State<MyToolbar> {
setState(() {});
}
});
final toolbarProvider =
Provider.of<ToolbarProvider>(context, listen: false);

_controller = AnimationController(
vsync: this,
duration: toolbarProvider.duration,
);

_heightAnimation = Tween<double>(
begin: _currentHeight,
end: toolbarProvider.toolbarHeight,
).animate(CurvedAnimation(
parent: _controller,
curve: Curves.easeInOut,
));

toolbarProvider.addListener(() {
_animateToolbarHeight(toolbarProvider.toolbarHeight);
});
}

void _animateToolbarHeight(double newHeight) {
if (!mounted) return;
setState(() {
_heightAnimation = Tween<double>(
begin: _currentHeight,
end: newHeight,
).animate(CurvedAnimation(
parent: _controller,
curve: Curves.easeInOut,
));

_currentHeight = newHeight;
});

_controller.reset();
_controller.forward();
}

@override
void dispose() {
_controller.dispose();
super.dispose();
}

@override
Expand All @@ -50,51 +103,77 @@ class _MyToolbarProvider extends State<MyToolbar> {
duration: toolbarProvider.duration,
curve: Curves.easeInOut,
height: toolbarProvider.toolbarHeight,
child: AnimatedContainer(
duration: toolbarProvider.duration,
curve: Curves.easeInOut,
color: toolbarProvider.scrolledPlaceColor,
child: AppBar(
backgroundColor: Colors.transparent,
toolbarHeight: toolbarProvider.toolbarHeight,
// leadingWidth: toolbarHeight,
leading: Padding(
padding: const EdgeInsets.symmetric(vertical: 8, horizontal: 8),
child: widget.uiModeController.darkModeSet
? Image.asset("assets/app_icons/light_transparent.png")
: Image.asset("assets/app_icons/dark_transparent.png")),
title: Padding(
padding: const EdgeInsets.all(8.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
Flexible(
child: TooltipAndSelectable(
isTooltip: true,
isSelectable: false,
message: AppLocalizations.of(context)!.appDescription,
child: Text(
AppLocalizations.of(context)!.appTitle,
color: toolbarProvider.scrolledPlaceColor,
child: AppBar(
backgroundColor: Colors.transparent,
toolbarHeight: _heightAnimation.value,
leadingWidth: toolbarProvider.toolbarHeight * 2,
leading: SizedBox(
height: toolbarProvider.toolbarHeight,
child: widget.uiModeController.darkModeSet
? SvgPicture(SvgAssetLoader(
"assets/app_icons/logo_graphic_top_SVG.svg",
colorMapper: SvgColorMapper(
fromColor: const Color(0xFFD02A1E),
toColor: mainRed,
fromSecondColor: white,
toSecondColor: white)))
: SvgPicture(SvgAssetLoader(
"assets/app_icons/logo_graphic_top_SVG.svg",
colorMapper: SvgColorMapper(
fromColor: const Color(0xFFD02A1E),
toColor: lightBlue,
fromSecondColor: white,
toSecondColor: black)))),
automaticallyImplyLeading: false,
title: Padding(
padding: const EdgeInsets.only(right: 10.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Flexible(
child: Center(
child: TooltipAndSelectable(
isTooltip: true,
isSelectable: false,
message: AppLocalizations.of(context)!.appDescription,
child: AnimatedTextBody(
text: AppLocalizations.of(context)!.appTitle,
initColor: white,
hoverColor: mainRed,
minSize: 20,
midSize: 25,
maxSize: 35,
// minSize: 40,
// midSize: 45,
// maxSize: 55,
fontWeight: FontWeight.normal,
textStyle: GoogleFonts.beauRivage(letterSpacing: 1.5),
),
),
)),
Flexible(
child: TooltipAndSelectable(
isTooltip: true,
isSelectable: false,
message: widget.uiModeController.darkModeSet
? AppLocalizations.of(context)!.toggleHoverToLight
: AppLocalizations.of(context)!.toggleHoverToDark,
child: UiModeSwitch(
uiModeController: widget.uiModeController,
),
),
Row(
children: [
TooltipAndSelectable(
isTooltip: true,
isSelectable: false,
message: widget.uiModeController.darkModeSet
? AppLocalizations.of(context)!.toggleHoverToLight
: AppLocalizations.of(context)!.toggleHoverToDark,
child: UiModeSwitch(
uiModeController: widget.uiModeController,
),
),
)),
Flexible(
child: LanguageSelector(
const SizedBox(
width: 20,
),
LanguageSelector(
uiModeController: widget.uiModeController,
),
),
],
),
],
),
],
),
),
),
Expand Down
Loading

0 comments on commit 1c9dcb4

Please sign in to comment.