Sonnat Project
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

114 lines
3.2 KiB

1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
  1. import 'package:flutter/foundation.dart';
  2. import 'package:flutter/material.dart';
  3. import 'package:intl/intl.dart';
  4. import 'package:shamsi_date/shamsi_date.dart';
  5. import 'package:sonnat/core/extensions/number_extension.dart';
  6. import 'package:sonnat/core/language/language_cubit.dart';
  7. import 'package:sonnat/core/utils/toast.dart';
  8. class DisableScrollEffect extends ScrollBehavior {
  9. @override
  10. Widget buildOverscrollIndicator(BuildContext context, Widget child, ScrollableDetails details) {
  11. return child;
  12. }
  13. }
  14. class Utils {
  15. Utils.privateConstructor();
  16. static final Utils instance = Utils.privateConstructor();
  17. factory Utils() {
  18. return instance;
  19. }
  20. void showToast(BuildContext? context, String? txt, {bool isError = true, ToastGravity gravity = ToastGravity.top}) {
  21. try {
  22. if (context == null) return;
  23. if (txt == null || txt.isEmpty) {
  24. if (isError == false) {
  25. return;
  26. }
  27. txt = 'خطا در برقراری ارتباط';
  28. }
  29. FToast fToast = FToast();
  30. fToast.init(context);
  31. Widget toast = Container(
  32. padding: const EdgeInsetsDirectional.all(16),
  33. decoration: BoxDecoration(
  34. borderRadius: BorderRadius.circular(8),
  35. color: isError ? Colors.red : Colors.lightBlue,
  36. ),
  37. child: Text(
  38. txt,
  39. style: const TextStyle(
  40. color: Colors.white,
  41. fontWeight: FontWeight.bold,
  42. ),
  43. ),
  44. );
  45. fToast.showToast(child: toast, gravity: gravity, toastDuration: const Duration(milliseconds: 1500));
  46. } catch (e) {
  47. assert(() {
  48. if (kDebugMode) {
  49. print(e);
  50. }
  51. return true;
  52. }());
  53. }
  54. }
  55. String showTimeInJalali(DateTime dateTime) {
  56. Jalali jalali = Jalali.fromDateTime(dateTime);
  57. return '${jalali.year}/${jalali.month}/${jalali.day}';
  58. }
  59. ThemeData getAppTheme(BuildContext context, CurrentLanguage language) {
  60. switch (language) {
  61. case CurrentLanguage.en:
  62. return ThemeData(
  63. scaffoldBackgroundColor: const Color(0xffE7E7F5),
  64. useMaterial3: true,
  65. );
  66. case CurrentLanguage.fa:
  67. return ThemeData(
  68. fontFamily: 'Vazir',
  69. scaffoldBackgroundColor: const Color(0xffE7E7F5),
  70. useMaterial3: true,
  71. );
  72. case CurrentLanguage.ar:
  73. return ThemeData(
  74. fontFamily: 'Cairo',
  75. useMaterial3: true,
  76. scaffoldBackgroundColor: const Color(0xffE7E7F5),
  77. );
  78. }
  79. }
  80. EdgeInsets allMargin(num? num) {
  81. return EdgeInsets.all(
  82. (num ?? 0).w,
  83. );
  84. }
  85. EdgeInsets singleMargin({num? top, num? right, num? bottom, num? left}) {
  86. return EdgeInsets.only(
  87. top: (top ?? 0).h,
  88. right: (right ?? 0).w,
  89. bottom: (bottom ?? 0).h,
  90. left: (left ?? 0).w,
  91. );
  92. }
  93. EdgeInsets symmetricMargin({horizontal, vertical}) {
  94. return EdgeInsets.symmetric(
  95. horizontal: (horizontal ?? 0).w,
  96. vertical: (vertical ?? 0).w,
  97. );
  98. }
  99. String dateToString(int dateInMilliseconds) {
  100. Jalali jalali = Jalali.fromDateTime(DateTime.fromMillisecondsSinceEpoch(dateInMilliseconds));
  101. return '${jalali.year}/${jalali.month}/${jalali.day}';
  102. }
  103. }