marco.pms.mobile/lib/view/ui/loaders_screen.dart
Vaibhav Surve 99902e743c Flutter application
- Created generated_plugin_registrant.cc and generated_plugin_registrant.h to manage plugin registration.
- Added generated_plugins.cmake for plugin configuration in CMake.
- Implemented CMakeLists.txt for the Windows runner, defining build settings and dependencies.
- Created Runner.rc for application resources including versioning and icons.
- Developed flutter_window.cpp and flutter_window.h to manage the Flutter window lifecycle.
- Implemented main.cpp as the entry point for the Windows application.
- Added resource.h for resource definitions.
- Included app icon in resources.
- Created runner.exe.manifest for application settings.
- Developed utils.cpp and utils.h for console management and command line argument handling.
- Implemented win32_window.cpp and win32_window.h for high DPI-aware window management.
2025-04-17 12:30:38 +05:30

433 lines
15 KiB
Dart

import 'package:marco/controller/ui/loaders_controller.dart';
import 'package:marco/helpers/theme/app_theme.dart';
import 'package:marco/helpers/utils/mixins/ui_mixin.dart';
import 'package:marco/helpers/utils/my_shadow.dart';
import 'package:marco/helpers/widgets/my_breadcrumb.dart';
import 'package:marco/helpers/widgets/my_breadcrumb_item.dart';
import 'package:marco/helpers/widgets/my_card.dart';
import 'package:marco/helpers/widgets/my_flex.dart';
import 'package:marco/helpers/widgets/my_flex_item.dart';
import 'package:marco/helpers/widgets/my_spacing.dart';
import 'package:marco/helpers/widgets/my_text.dart';
import 'package:marco/view/layouts/layout.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:loading_animation_widget/loading_animation_widget.dart';
class LoadersScreen extends StatefulWidget {
const LoadersScreen({super.key});
@override
State<LoadersScreen> createState() => _LoadersScreenState();
}
class _LoadersScreenState extends State<LoadersScreen> with SingleTickerProviderStateMixin, UIMixin {
late LoadersController controller;
@override
void initState() {
controller = LoadersController();
super.initState();
}
@override
Widget build(BuildContext context) {
return Layout(
child: GetBuilder(
init: controller,
tag: 'loaders_controller',
builder: (controller) {
return Column(
children: [
Padding(
padding: MySpacing.x(flexSpacing),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
MyText.titleMedium(
"Loader",
fontSize: 18,
fontWeight: 600,
),
MyBreadcrumb(
children: [
MyBreadcrumbItem(name: 'Widget'),
MyBreadcrumbItem(name: 'Loader', active: true),
],
),
],
),
),
MySpacing.height(flexSpacing),
Padding(
padding: MySpacing.x(flexSpacing / 2),
child: MyFlex(
children: [
MyFlexItem(sizes: 'lg-3 md-6', child: simpleLoader()),
MyFlexItem(sizes: 'lg-3 md-6', child: waveDotsLoader()),
MyFlexItem(sizes: 'lg-3 md-6', child: inkDropLoader()),
MyFlexItem(sizes: 'lg-3 md-6', child: twistingDotsLoader()),
MyFlexItem(sizes: 'lg-3 md-6', child: threeRotatingDotsLoader()),
MyFlexItem(sizes: 'lg-3 md-6', child: staggeredDotsLoader()),
MyFlexItem(sizes: 'lg-3 md-6', child: fourRotatingDotsLoader()),
MyFlexItem(sizes: 'lg-3 md-6', child: fallingDotsLoader()),
MyFlexItem(sizes: 'lg-3 md-6', child: progressiveDotsLoader()),
MyFlexItem(sizes: 'lg-3 md-6', child: discreteCircularLoader()),
MyFlexItem(sizes: 'lg-3 md-6', child: threeArchedCircleLoader()),
MyFlexItem(sizes: 'lg-3 md-6', child: bouncingBallLoader()),
MyFlexItem(sizes: 'lg-3 md-6', child: flickrLoader()),
MyFlexItem(sizes: 'lg-3 md-6', child: hexagonDotsLoader()),
MyFlexItem(sizes: 'lg-3 md-6', child: beatLoader()),
MyFlexItem(sizes: 'lg-3 md-6', child: twoRotatingArcLoader()),
MyFlexItem(sizes: 'lg-3 md-6', child: newtonCradleLoader()),
MyFlexItem(sizes: 'lg-3 md-6', child: stretchedDotsLoader()),
MyFlexItem(sizes: 'lg-3 md-6', child: halfTriangleDotLoader()),
MyFlexItem(sizes: 'lg-3 md-6', child: dotsTriangleLoader()),
MyFlexItem(sizes: 'lg-3 md-6', child: horizontalRotatingLoader()),
],
),
),
],
);
},
),
);
}
Widget horizontalRotatingLoader() {
return MyCard.bordered(
borderRadiusAll: 4,
border: Border.all(color: Colors.grey.withValues(alpha:.2)),
shadow: MyShadow(elevation: 1, position: MyShadowPosition.bottom),
height: 150,
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
MyText.titleMedium("Horizontal Rotating Loader", fontWeight: 600),
LoadingAnimationWidget.horizontalRotatingDots(size: 40, color: contentTheme.primary),
],
),
);
}
Widget flickrLoader() {
return MyCard.bordered(
borderRadiusAll: 4,
border: Border.all(color: Colors.grey.withValues(alpha:.2)),
shadow: MyShadow(elevation: 1, position: MyShadowPosition.bottom),
height: 150,
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
MyText.titleMedium("Flickr Loader", fontWeight: 600),
LoadingAnimationWidget.flickr(size: 40, leftDotColor: contentTheme.secondary, rightDotColor: contentTheme.primary),
],
),
);
}
Widget dotsTriangleLoader() {
return MyCard.bordered(
borderRadiusAll: 4,
border: Border.all(color: Colors.grey.withValues(alpha:.2)),
shadow: MyShadow(elevation: 1, position: MyShadowPosition.bottom),
height: 150,
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
MyText.titleMedium("DotsTriangle Loader", fontWeight: 600),
LoadingAnimationWidget.dotsTriangle(color: contentTheme.primary, size: 40),
],
),
);
}
Widget halfTriangleDotLoader() {
return MyCard.bordered(
borderRadiusAll: 4,
border: Border.all(color: Colors.grey.withValues(alpha:.2)),
shadow: MyShadow(elevation: 1, position: MyShadowPosition.bottom),
height: 150,
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
MyText.titleMedium("Half TriangleDot Loader", fontWeight: 600),
LoadingAnimationWidget.halfTriangleDot(color: contentTheme.primary, size: 40),
],
),
);
}
Widget stretchedDotsLoader() {
return MyCard.bordered(
borderRadiusAll: 4,
border: Border.all(color: Colors.grey.withValues(alpha:.2)),
shadow: MyShadow(elevation: 1, position: MyShadowPosition.bottom),
height: 150,
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
MyText.titleMedium("StretchedDots Loader", fontWeight: 600),
LoadingAnimationWidget.stretchedDots(color: contentTheme.primary, size: 40),
],
),
);
}
Widget newtonCradleLoader() {
return MyCard.bordered(
borderRadiusAll: 4,
border: Border.all(color: Colors.grey.withValues(alpha:.2)),
shadow: MyShadow(elevation: 1, position: MyShadowPosition.bottom),
height: 150,
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
MyText.titleMedium("NewtonCradle Loader", fontWeight: 600),
LoadingAnimationWidget.newtonCradle(color: contentTheme.primary, size: 40),
],
),
);
}
Widget twoRotatingArcLoader() {
return MyCard.bordered(
borderRadiusAll: 4,
border: Border.all(color: Colors.grey.withValues(alpha:.2)),
shadow: MyShadow(elevation: 1, position: MyShadowPosition.bottom),
height: 150,
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
MyText.titleMedium("Two RotatingArc Loader", fontWeight: 600),
LoadingAnimationWidget.twoRotatingArc(color: contentTheme.primary, size: 40),
],
),
);
}
Widget beatLoader() {
return MyCard.bordered(
borderRadiusAll: 4,
border: Border.all(color: Colors.grey.withValues(alpha:.2)),
shadow: MyShadow(elevation: 1, position: MyShadowPosition.bottom),
height: 150,
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
MyText.titleMedium("Beat Loader", fontWeight: 600),
LoadingAnimationWidget.beat(color: contentTheme.primary, size: 40),
],
),
);
}
Widget hexagonDotsLoader() {
return MyCard.bordered(
borderRadiusAll: 4,
border: Border.all(color: Colors.grey.withValues(alpha:.2)),
shadow: MyShadow(elevation: 1, position: MyShadowPosition.bottom),
height: 150,
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
MyText.titleMedium("Hexagon Dots Loader", fontWeight: 600),
LoadingAnimationWidget.hexagonDots(color: contentTheme.primary, size: 40),
],
),
);
}
Widget bouncingBallLoader() {
return MyCard.bordered(
borderRadiusAll: 4,
border: Border.all(color: Colors.grey.withValues(alpha:.2)),
shadow: MyShadow(elevation: 1, position: MyShadowPosition.bottom),
height: 150,
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
MyText.titleMedium("Bouncing Ball Loader", fontWeight: 600),
LoadingAnimationWidget.bouncingBall(color: contentTheme.primary, size: 40),
],
),
);
}
Widget threeArchedCircleLoader() {
return MyCard.bordered(
borderRadiusAll: 4,
border: Border.all(color: Colors.grey.withValues(alpha:.2)),
shadow: MyShadow(elevation: 1, position: MyShadowPosition.bottom),
height: 150,
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
MyText.titleMedium("Three Arched Circle Loader", fontWeight: 600),
LoadingAnimationWidget.threeArchedCircle(color: contentTheme.primary, size: 40),
],
),
);
}
Widget discreteCircularLoader() {
return MyCard.bordered(
borderRadiusAll: 4,
border: Border.all(color: Colors.grey.withValues(alpha:.2)),
shadow: MyShadow(elevation: 1, position: MyShadowPosition.bottom),
height: 150,
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
MyText.titleMedium("Discrete Circular Loader", fontWeight: 600),
LoadingAnimationWidget.discreteCircle(color: contentTheme.primary, size: 40),
],
),
);
}
Widget progressiveDotsLoader() {
return MyCard.bordered(
borderRadiusAll: 4,
border: Border.all(color: Colors.grey.withValues(alpha:.2)),
shadow: MyShadow(elevation: 1, position: MyShadowPosition.bottom),
height: 150,
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
MyText.titleMedium("Progressive Dots Loader", fontWeight: 600),
LoadingAnimationWidget.progressiveDots(color: contentTheme.primary, size: 40),
],
),
);
}
Widget fallingDotsLoader() {
return MyCard.bordered(
borderRadiusAll: 4,
border: Border.all(color: Colors.grey.withValues(alpha:.2)),
shadow: MyShadow(elevation: 1, position: MyShadowPosition.bottom),
height: 150,
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
MyText.titleMedium("Falling Dots Loader", fontWeight: 600),
LoadingAnimationWidget.fallingDot(color: contentTheme.primary, size: 40),
],
),
);
}
Widget fourRotatingDotsLoader() {
return MyCard.bordered(
borderRadiusAll: 4,
border: Border.all(color: Colors.grey.withValues(alpha:.2)),
shadow: MyShadow(elevation: 1, position: MyShadowPosition.bottom),
height: 150,
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
MyText.titleMedium("Four Rotating Dots Loader", fontWeight: 600),
LoadingAnimationWidget.fourRotatingDots(color: contentTheme.primary, size: 40),
],
),
);
}
Widget staggeredDotsLoader() {
return MyCard.bordered(
borderRadiusAll: 4,
border: Border.all(color: Colors.grey.withValues(alpha:.2)),
shadow: MyShadow(elevation: 1, position: MyShadowPosition.bottom),
height: 150,
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
MyText.titleMedium("staggered Dots Loader", fontWeight: 600),
LoadingAnimationWidget.staggeredDotsWave(color: contentTheme.primary, size: 40),
],
),
);
}
Widget threeRotatingDotsLoader() {
return MyCard.bordered(
borderRadiusAll: 4,
border: Border.all(color: Colors.grey.withValues(alpha:.2)),
shadow: MyShadow(elevation: 1, position: MyShadowPosition.bottom),
height: 150,
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
MyText.titleMedium("ThreeRotating Dots Loader", fontWeight: 600),
LoadingAnimationWidget.threeRotatingDots(color: contentTheme.primary, size: 40),
],
),
);
}
Widget twistingDotsLoader() {
return MyCard.bordered(
borderRadiusAll: 4,
border: Border.all(color: Colors.grey.withValues(alpha:.2)),
shadow: MyShadow(elevation: 1, position: MyShadowPosition.bottom),
height: 150,
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
MyText.titleMedium("Twisting Dots Loader", fontWeight: 600),
LoadingAnimationWidget.twistingDots(rightDotColor: contentTheme.primary, leftDotColor: contentTheme.secondary, size: 40),
],
),
);
}
Widget simpleLoader() {
return MyCard.bordered(
borderRadiusAll: 4,
border: Border.all(color: Colors.grey.withValues(alpha:.2)),
shadow: MyShadow(elevation: 1, position: MyShadowPosition.bottom),
height: 150,
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
MyText.titleMedium("Simple Loader", fontWeight: 600),
CircularProgressIndicator(),
],
),
);
}
Widget waveDotsLoader() {
return MyCard.bordered(
borderRadiusAll: 4,
border: Border.all(color: Colors.grey.withValues(alpha:.2)),
shadow: MyShadow(elevation: 1, position: MyShadowPosition.bottom),
height: 150,
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
MyText.titleMedium("WaveDots Loader", fontWeight: 600),
LoadingAnimationWidget.waveDots(color: theme.colorScheme.primary, size: 40),
],
),
);
}
Widget inkDropLoader() {
return MyCard.bordered(
borderRadiusAll: 4,
border: Border.all(color: Colors.grey.withValues(alpha:.2)),
shadow: MyShadow(elevation: 1, position: MyShadowPosition.bottom),
height: 150,
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
MyText.titleMedium("Ink Drop Loader", fontWeight: 600),
LoadingAnimationWidget.inkDrop(color: theme.colorScheme.primary, size: 40),
],
),
);
}
}