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.

85 lines
2.4 KiB

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