fix :
1 - multi module in Auth select save selected module 2 - add flutter gen for assets builder
This commit is contained in:
1
assets/icons/inspection.svg
Normal file
1
assets/icons/inspection.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 8.2 KiB |
1
assets/icons/liveStock.svg
Normal file
1
assets/icons/liveStock.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 7.1 KiB |
BIN
assets/vec/inspection.svg.vec
Normal file
BIN
assets/vec/inspection.svg.vec
Normal file
Binary file not shown.
BIN
assets/vec/liveStock.svg.vec
Normal file
BIN
assets/vec/liveStock.svg.vec
Normal file
Binary file not shown.
@@ -1,7 +1,9 @@
|
|||||||
import 'package:rasadyar_auth/auth.dart';
|
import 'package:rasadyar_app/presentation/routes/app_pages.dart';
|
||||||
|
import 'package:rasadyar_auth/data/models/local/module/module_model.dart';
|
||||||
import 'package:rasadyar_auth/data/services/token_storage_service.dart';
|
import 'package:rasadyar_auth/data/services/token_storage_service.dart';
|
||||||
import 'package:rasadyar_core/core.dart';
|
import 'package:rasadyar_core/core.dart';
|
||||||
import 'package:rasadyar_inspection/inspection.dart';
|
import 'package:rasadyar_inspection/inspection.dart';
|
||||||
|
import 'package:rasadyar_livestock/presentation/routes/app_pages.dart';
|
||||||
|
|
||||||
class AuthService extends GetxService {
|
class AuthService extends GetxService {
|
||||||
var tokenService = Get.find<TokenStorageService>();
|
var tokenService = Get.find<TokenStorageService>();
|
||||||
@@ -13,25 +15,19 @@ class AuthService extends GetxService {
|
|||||||
super.onInit();
|
super.onInit();
|
||||||
|
|
||||||
ever(tokenService.accessToken, (callback) {
|
ever(tokenService.accessToken, (callback) {
|
||||||
iLog('Access token callback: $callback, value: ${tokenService.accessToken.value}');
|
|
||||||
accessRes.value = (callback != null);
|
accessRes.value = (callback != null);
|
||||||
});
|
});
|
||||||
|
|
||||||
ever(tokenService.refreshToken, (callback) {
|
ever(tokenService.refreshToken, (callback) {
|
||||||
fLog('Refresh token callback: $callback, value: ${tokenService.refreshToken.value}');
|
|
||||||
refAccessRes.value = (callback != null);
|
refAccessRes.value = (callback != null);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
everAll([accessRes, refAccessRes], (_) {
|
everAll([accessRes, refAccessRes], (_) {
|
||||||
if (accessRes.value && refAccessRes.value) {
|
if (accessRes.value && refAccessRes.value) {
|
||||||
|
var targetPage = getTargetPage(tokenService.appModule.value);
|
||||||
Get.offAndToNamed(InspectionRoutes.inspection);
|
Get.offAndToNamed(targetPage);
|
||||||
fLog('Both accessToken and refreshToken are available: accessToken=${tokenService.accessToken.value}, refreshToken=${tokenService.refreshToken.value}');
|
|
||||||
} else {
|
|
||||||
fLog('One or both tokens are missing: accessToken=${tokenService.accessToken.value}, refreshToken=${tokenService.refreshToken.value}');
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import 'package:flutter/animation.dart';
|
import 'package:flutter/animation.dart';
|
||||||
|
import 'package:rasadyar_app/presentation/routes/app_pages.dart';
|
||||||
|
import 'package:rasadyar_auth/data/services/token_storage_service.dart';
|
||||||
import 'package:rasadyar_core/core.dart';
|
import 'package:rasadyar_core/core.dart';
|
||||||
import 'package:rasadyar_inspection/inspection.dart';
|
|
||||||
|
|
||||||
class SplashLogic extends GetxController with GetTickerProviderStateMixin {
|
class SplashLogic extends GetxController with GetTickerProviderStateMixin {
|
||||||
late final AnimationController scaleController;
|
late final AnimationController scaleController;
|
||||||
@@ -8,6 +9,8 @@ class SplashLogic extends GetxController with GetTickerProviderStateMixin {
|
|||||||
Rxn<Animation<double>> scaleAnimation = Rxn();
|
Rxn<Animation<double>> scaleAnimation = Rxn();
|
||||||
Rxn<Animation<double>> rotationAnimation = Rxn();
|
Rxn<Animation<double>> rotationAnimation = Rxn();
|
||||||
|
|
||||||
|
var tokenService = Get.find<TokenStorageService>();
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void onInit() {
|
void onInit() {
|
||||||
super.onInit();
|
super.onInit();
|
||||||
@@ -53,8 +56,9 @@ class SplashLogic extends GetxController with GetTickerProviderStateMixin {
|
|||||||
@override
|
@override
|
||||||
void onReady() {
|
void onReady() {
|
||||||
super.onReady();
|
super.onReady();
|
||||||
Future.delayed(const Duration(seconds: 1), () {
|
Future.delayed(const Duration(seconds: 1), () async {
|
||||||
Get.offAllNamed(InspectionRoutes.inspection);
|
var module = tokenService.appModule.value;
|
||||||
|
Get.offAndToNamed(getTargetPage(module));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -20,11 +20,10 @@ class SplashPage extends GetView<SplashLogic> {
|
|||||||
scale: data.value!,
|
scale: data.value!,
|
||||||
child: Padding(
|
child: Padding(
|
||||||
padding: const EdgeInsets.symmetric(horizontal: 1),
|
padding: const EdgeInsets.symmetric(horizontal: 1),
|
||||||
child: Image.asset(
|
child: Assets.images.innerSplash.image(
|
||||||
Assets.imagesInnerSplash,
|
|
||||||
width: 190,
|
width: 190,
|
||||||
height: 190,
|
height: 190,
|
||||||
),
|
)
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}, controller.scaleAnimation),
|
}, controller.scaleAnimation),
|
||||||
@@ -35,7 +34,7 @@ class SplashPage extends GetView<SplashLogic> {
|
|||||||
|
|
||||||
child: Padding(
|
child: Padding(
|
||||||
padding: const EdgeInsets.symmetric(horizontal: 1),
|
padding: const EdgeInsets.symmetric(horizontal: 1),
|
||||||
child: Image.asset(Assets.imagesOutterSplash),
|
child: Assets.images.outterSplash.image()
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}, controller.rotationAnimation),
|
}, controller.rotationAnimation),
|
||||||
|
|||||||
@@ -1,9 +1,12 @@
|
|||||||
import 'package:rasadyar_app/presentation/pages/splash/logic.dart';
|
import 'package:rasadyar_app/presentation/pages/splash/logic.dart';
|
||||||
import 'package:rasadyar_app/presentation/pages/splash/view.dart';
|
import 'package:rasadyar_app/presentation/pages/splash/view.dart';
|
||||||
import 'package:rasadyar_app/presentation/pages/system_design/system_design.dart';
|
import 'package:rasadyar_app/presentation/pages/system_design/system_design.dart';
|
||||||
|
import 'package:rasadyar_auth/auth.dart';
|
||||||
|
import 'package:rasadyar_auth/data/models/local/user_local/user_local_model.dart';
|
||||||
import 'package:rasadyar_auth/presentation/routes/pages.dart';
|
import 'package:rasadyar_auth/presentation/routes/pages.dart';
|
||||||
import 'package:rasadyar_core/core.dart';
|
import 'package:rasadyar_core/core.dart';
|
||||||
import 'package:rasadyar_inspection/inspection.dart';
|
import 'package:rasadyar_inspection/inspection.dart';
|
||||||
|
import 'package:rasadyar_livestock/presentation/routes/app_pages.dart';
|
||||||
|
|
||||||
part 'app_paths.dart';
|
part 'app_paths.dart';
|
||||||
|
|
||||||
@@ -23,6 +26,18 @@ sealed class AppPages {
|
|||||||
|
|
||||||
...InspectionPages.pages,
|
...InspectionPages.pages,
|
||||||
...AuthPages.pages,
|
...AuthPages.pages,
|
||||||
|
...LiveStockPages.pages,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String getTargetPage(Module? value) {
|
||||||
|
eLog('getTargetPage: $value');
|
||||||
|
switch (value) {
|
||||||
|
case Module.inspection:
|
||||||
|
return InspectionRoutes.inspection;
|
||||||
|
case Module.liveStocks:
|
||||||
|
return LiveStockRoutes.init;
|
||||||
|
default:
|
||||||
|
return InspectionRoutes.inspection;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -5,3 +5,4 @@ library;
|
|||||||
|
|
||||||
export 'data/services/auth_middelware.dart';
|
export 'data/services/auth_middelware.dart';
|
||||||
export 'data/di/auth_di.dart';
|
export 'data/di/auth_di.dart';
|
||||||
|
export 'data/models/local/module/module_model.dart';
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ GetIt diAuth = GetIt.instance;
|
|||||||
Future<void> setupAuthDI() async {
|
Future<void> setupAuthDI() async {
|
||||||
diAuth.registerLazySingleton(() => DioRemoteManager());
|
diAuth.registerLazySingleton(() => DioRemoteManager());
|
||||||
|
|
||||||
|
|
||||||
final manager = diAuth.get<DioRemoteManager>();
|
final manager = diAuth.get<DioRemoteManager>();
|
||||||
final dioRemote = await manager.setEnvironment(ApiEnvironment.dam);
|
final dioRemote = await manager.setEnvironment(ApiEnvironment.dam);
|
||||||
diAuth.registerCachedFactory<AuthRepositoryImpl>(
|
diAuth.registerCachedFactory<AuthRepositoryImpl>(
|
||||||
|
|||||||
16
packages/auth/lib/data/models/local/module/module_model.dart
Normal file
16
packages/auth/lib/data/models/local/module/module_model.dart
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:rasadyar_auth/data/models/local/user_local/user_local_model.dart';
|
||||||
|
import 'package:rasadyar_core/core.dart';
|
||||||
|
|
||||||
|
part 'module_model.freezed.dart';
|
||||||
|
|
||||||
|
|
||||||
|
@freezed
|
||||||
|
abstract class ModuleModel with _$ModuleModel{
|
||||||
|
const factory ModuleModel({
|
||||||
|
required String title,
|
||||||
|
required String icon,
|
||||||
|
required Module module,
|
||||||
|
}) = _ModuleModel;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,148 @@
|
|||||||
|
// dart format width=80
|
||||||
|
// coverage:ignore-file
|
||||||
|
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||||
|
// ignore_for_file: type=lint
|
||||||
|
// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark
|
||||||
|
|
||||||
|
part of 'module_model.dart';
|
||||||
|
|
||||||
|
// **************************************************************************
|
||||||
|
// FreezedGenerator
|
||||||
|
// **************************************************************************
|
||||||
|
|
||||||
|
// dart format off
|
||||||
|
T _$identity<T>(T value) => value;
|
||||||
|
/// @nodoc
|
||||||
|
mixin _$ModuleModel {
|
||||||
|
|
||||||
|
String get title; String get icon; Module get module;
|
||||||
|
/// Create a copy of ModuleModel
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
@JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
|
@pragma('vm:prefer-inline')
|
||||||
|
$ModuleModelCopyWith<ModuleModel> get copyWith => _$ModuleModelCopyWithImpl<ModuleModel>(this as ModuleModel, _$identity);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@override
|
||||||
|
bool operator ==(Object other) {
|
||||||
|
return identical(this, other) || (other.runtimeType == runtimeType&&other is ModuleModel&&(identical(other.title, title) || other.title == title)&&(identical(other.icon, icon) || other.icon == icon)&&(identical(other.module, module) || other.module == module));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@override
|
||||||
|
int get hashCode => Object.hash(runtimeType,title,icon,module);
|
||||||
|
|
||||||
|
@override
|
||||||
|
String toString() {
|
||||||
|
return 'ModuleModel(title: $title, icon: $icon, module: $module)';
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/// @nodoc
|
||||||
|
abstract mixin class $ModuleModelCopyWith<$Res> {
|
||||||
|
factory $ModuleModelCopyWith(ModuleModel value, $Res Function(ModuleModel) _then) = _$ModuleModelCopyWithImpl;
|
||||||
|
@useResult
|
||||||
|
$Res call({
|
||||||
|
String title, String icon, Module module
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
/// @nodoc
|
||||||
|
class _$ModuleModelCopyWithImpl<$Res>
|
||||||
|
implements $ModuleModelCopyWith<$Res> {
|
||||||
|
_$ModuleModelCopyWithImpl(this._self, this._then);
|
||||||
|
|
||||||
|
final ModuleModel _self;
|
||||||
|
final $Res Function(ModuleModel) _then;
|
||||||
|
|
||||||
|
/// Create a copy of ModuleModel
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
@pragma('vm:prefer-inline') @override $Res call({Object? title = null,Object? icon = null,Object? module = null,}) {
|
||||||
|
return _then(_self.copyWith(
|
||||||
|
title: null == title ? _self.title : title // ignore: cast_nullable_to_non_nullable
|
||||||
|
as String,icon: null == icon ? _self.icon : icon // ignore: cast_nullable_to_non_nullable
|
||||||
|
as String,module: null == module ? _self.module : module // ignore: cast_nullable_to_non_nullable
|
||||||
|
as Module,
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// @nodoc
|
||||||
|
|
||||||
|
|
||||||
|
class _ModuleModel implements ModuleModel {
|
||||||
|
const _ModuleModel({required this.title, required this.icon, required this.module});
|
||||||
|
|
||||||
|
|
||||||
|
@override final String title;
|
||||||
|
@override final String icon;
|
||||||
|
@override final Module module;
|
||||||
|
|
||||||
|
/// Create a copy of ModuleModel
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
@override @JsonKey(includeFromJson: false, includeToJson: false)
|
||||||
|
@pragma('vm:prefer-inline')
|
||||||
|
_$ModuleModelCopyWith<_ModuleModel> get copyWith => __$ModuleModelCopyWithImpl<_ModuleModel>(this, _$identity);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@override
|
||||||
|
bool operator ==(Object other) {
|
||||||
|
return identical(this, other) || (other.runtimeType == runtimeType&&other is _ModuleModel&&(identical(other.title, title) || other.title == title)&&(identical(other.icon, icon) || other.icon == icon)&&(identical(other.module, module) || other.module == module));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@override
|
||||||
|
int get hashCode => Object.hash(runtimeType,title,icon,module);
|
||||||
|
|
||||||
|
@override
|
||||||
|
String toString() {
|
||||||
|
return 'ModuleModel(title: $title, icon: $icon, module: $module)';
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/// @nodoc
|
||||||
|
abstract mixin class _$ModuleModelCopyWith<$Res> implements $ModuleModelCopyWith<$Res> {
|
||||||
|
factory _$ModuleModelCopyWith(_ModuleModel value, $Res Function(_ModuleModel) _then) = __$ModuleModelCopyWithImpl;
|
||||||
|
@override @useResult
|
||||||
|
$Res call({
|
||||||
|
String title, String icon, Module module
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
/// @nodoc
|
||||||
|
class __$ModuleModelCopyWithImpl<$Res>
|
||||||
|
implements _$ModuleModelCopyWith<$Res> {
|
||||||
|
__$ModuleModelCopyWithImpl(this._self, this._then);
|
||||||
|
|
||||||
|
final _ModuleModel _self;
|
||||||
|
final $Res Function(_ModuleModel) _then;
|
||||||
|
|
||||||
|
/// Create a copy of ModuleModel
|
||||||
|
/// with the given fields replaced by the non-null parameter values.
|
||||||
|
@override @pragma('vm:prefer-inline') $Res call({Object? title = null,Object? icon = null,Object? module = null,}) {
|
||||||
|
return _then(_ModuleModel(
|
||||||
|
title: null == title ? _self.title : title // ignore: cast_nullable_to_non_nullable
|
||||||
|
as String,icon: null == icon ? _self.icon : icon // ignore: cast_nullable_to_non_nullable
|
||||||
|
as String,module: null == module ? _self.module : module // ignore: cast_nullable_to_non_nullable
|
||||||
|
as Module,
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// dart format on
|
||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import 'package:rasadyar_auth/auth.dart';
|
||||||
import 'package:rasadyar_core/core.dart';
|
import 'package:rasadyar_core/core.dart';
|
||||||
|
|
||||||
part 'user_local_model.g.dart';
|
part 'user_local_model.g.dart';
|
||||||
@@ -15,12 +16,16 @@ class UserLocalModel extends HiveObject {
|
|||||||
@HiveField(4)
|
@HiveField(4)
|
||||||
String? name;
|
String? name;
|
||||||
|
|
||||||
|
@HiveField(5)
|
||||||
|
Module? module;
|
||||||
|
|
||||||
UserLocalModel({
|
UserLocalModel({
|
||||||
this.username,
|
this.username,
|
||||||
this.password,
|
this.password,
|
||||||
this.token,
|
this.token,
|
||||||
this.refreshToken,
|
this.refreshToken,
|
||||||
this.name,
|
this.name,
|
||||||
|
this.module,
|
||||||
});
|
});
|
||||||
|
|
||||||
UserLocalModel copyWith({
|
UserLocalModel copyWith({
|
||||||
@@ -29,6 +34,7 @@ class UserLocalModel extends HiveObject {
|
|||||||
String? token,
|
String? token,
|
||||||
String? refreshToken,
|
String? refreshToken,
|
||||||
String? name,
|
String? name,
|
||||||
|
Module? module,
|
||||||
}) {
|
}) {
|
||||||
return UserLocalModel(
|
return UserLocalModel(
|
||||||
username: username ?? this.username,
|
username: username ?? this.username,
|
||||||
@@ -36,6 +42,15 @@ class UserLocalModel extends HiveObject {
|
|||||||
token: token ?? this.token,
|
token: token ?? this.token,
|
||||||
refreshToken: refreshToken ?? this.refreshToken,
|
refreshToken: refreshToken ?? this.refreshToken,
|
||||||
name: name ?? this.name,
|
name: name ?? this.name,
|
||||||
|
module: module ?? this.module,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@HiveType(typeId: 1)
|
||||||
|
enum Module {
|
||||||
|
@HiveField(0)
|
||||||
|
liveStocks,
|
||||||
|
@HiveField(1)
|
||||||
|
inspection,
|
||||||
|
}
|
||||||
|
|||||||
@@ -22,13 +22,14 @@ class UserLocalModelAdapter extends TypeAdapter<UserLocalModel> {
|
|||||||
token: fields[2] as String?,
|
token: fields[2] as String?,
|
||||||
refreshToken: fields[3] as String?,
|
refreshToken: fields[3] as String?,
|
||||||
name: fields[4] as String?,
|
name: fields[4] as String?,
|
||||||
|
module: fields[5] as Module?,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void write(BinaryWriter writer, UserLocalModel obj) {
|
void write(BinaryWriter writer, UserLocalModel obj) {
|
||||||
writer
|
writer
|
||||||
..writeByte(5)
|
..writeByte(6)
|
||||||
..writeByte(0)
|
..writeByte(0)
|
||||||
..write(obj.username)
|
..write(obj.username)
|
||||||
..writeByte(1)
|
..writeByte(1)
|
||||||
@@ -38,7 +39,9 @@ class UserLocalModelAdapter extends TypeAdapter<UserLocalModel> {
|
|||||||
..writeByte(3)
|
..writeByte(3)
|
||||||
..write(obj.refreshToken)
|
..write(obj.refreshToken)
|
||||||
..writeByte(4)
|
..writeByte(4)
|
||||||
..write(obj.name);
|
..write(obj.name)
|
||||||
|
..writeByte(5)
|
||||||
|
..write(obj.module);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -51,3 +54,40 @@ class UserLocalModelAdapter extends TypeAdapter<UserLocalModel> {
|
|||||||
runtimeType == other.runtimeType &&
|
runtimeType == other.runtimeType &&
|
||||||
typeId == other.typeId;
|
typeId == other.typeId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class ModuleAdapter extends TypeAdapter<Module> {
|
||||||
|
@override
|
||||||
|
final typeId = 1;
|
||||||
|
|
||||||
|
@override
|
||||||
|
Module read(BinaryReader reader) {
|
||||||
|
switch (reader.readByte()) {
|
||||||
|
case 0:
|
||||||
|
return Module.liveStocks;
|
||||||
|
case 1:
|
||||||
|
return Module.inspection;
|
||||||
|
default:
|
||||||
|
return Module.liveStocks;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void write(BinaryWriter writer, Module obj) {
|
||||||
|
switch (obj) {
|
||||||
|
case Module.liveStocks:
|
||||||
|
writer.writeByte(0);
|
||||||
|
case Module.inspection:
|
||||||
|
writer.writeByte(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
int get hashCode => typeId.hashCode;
|
||||||
|
|
||||||
|
@override
|
||||||
|
bool operator ==(Object other) =>
|
||||||
|
identical(this, other) ||
|
||||||
|
other is ModuleAdapter &&
|
||||||
|
runtimeType == other.runtimeType &&
|
||||||
|
typeId == other.typeId;
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,20 +1,26 @@
|
|||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
|
||||||
|
import 'package:rasadyar_auth/data/models/local/user_local/user_local_model.dart';
|
||||||
|
import 'package:rasadyar_auth/hive_registrar.g.dart';
|
||||||
import 'package:rasadyar_core/core.dart';
|
import 'package:rasadyar_core/core.dart';
|
||||||
|
|
||||||
class TokenStorageService extends GetxService {
|
class TokenStorageService extends GetxService {
|
||||||
static const String _boxName = 'secureBox';
|
static const String _boxName = 'secureBox';
|
||||||
static const String _accessTokenKey = 'accessToken';
|
static const String _accessTokenKey = 'accessToken';
|
||||||
static const String _refreshTokenKey = 'refreshToken';
|
static const String _refreshTokenKey = 'refreshToken';
|
||||||
|
static const String _moduleKey = 'moduleSelected';
|
||||||
|
|
||||||
final FlutterSecureStorage _secureStorage = FlutterSecureStorage();
|
final FlutterSecureStorage _secureStorage = FlutterSecureStorage();
|
||||||
final HiveLocalStorage _localStorage = diCore.get<HiveLocalStorage>();
|
final HiveLocalStorage _localStorage = diCore.get<HiveLocalStorage>();
|
||||||
|
|
||||||
RxnString accessToken = RxnString();
|
RxnString accessToken = RxnString();
|
||||||
RxnString refreshToken = RxnString();
|
RxnString refreshToken = RxnString();
|
||||||
RxnString tsss = RxnString();
|
Rxn<Module> appModule = Rxn(null);
|
||||||
|
|
||||||
Future<void> init() async {
|
Future<void> init() async {
|
||||||
|
Hive.registerAdapters();
|
||||||
|
IsolatedHive.registerAdapters();
|
||||||
|
|
||||||
final String? encryptedKey = await _secureStorage.read(key: 'hive_enc_key');
|
final String? encryptedKey = await _secureStorage.read(key: 'hive_enc_key');
|
||||||
final encryptionKey =
|
final encryptionKey =
|
||||||
encryptedKey != null
|
encryptedKey != null
|
||||||
@@ -42,6 +48,10 @@ class TokenStorageService extends GetxService {
|
|||||||
boxName: _boxName,
|
boxName: _boxName,
|
||||||
key: _refreshTokenKey,
|
key: _refreshTokenKey,
|
||||||
);
|
);
|
||||||
|
appModule.value = _localStorage.read<Module?>(
|
||||||
|
boxName: _boxName,
|
||||||
|
key: _moduleKey,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> saveAccessToken(String token) async {
|
Future<void> saveAccessToken(String token) async {
|
||||||
@@ -64,6 +74,12 @@ class TokenStorageService extends GetxService {
|
|||||||
refreshToken.refresh();
|
refreshToken.refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<void> saveModule(Module input) async {
|
||||||
|
await _localStorage.save(boxName: _boxName, key: _moduleKey, value: input);
|
||||||
|
appModule.value = input;
|
||||||
|
appModule.refresh();
|
||||||
|
}
|
||||||
|
|
||||||
Future<void> deleteTokens() async {
|
Future<void> deleteTokens() async {
|
||||||
await _localStorage.clear(_boxName);
|
await _localStorage.clear(_boxName);
|
||||||
accessToken.value = null;
|
accessToken.value = null;
|
||||||
|
|||||||
@@ -7,12 +7,14 @@ import 'package:rasadyar_auth/data/models/local/user_local/user_local_model.dart
|
|||||||
|
|
||||||
extension HiveRegistrar on HiveInterface {
|
extension HiveRegistrar on HiveInterface {
|
||||||
void registerAdapters() {
|
void registerAdapters() {
|
||||||
|
registerAdapter(ModuleAdapter());
|
||||||
registerAdapter(UserLocalModelAdapter());
|
registerAdapter(UserLocalModelAdapter());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
extension IsolatedHiveRegistrar on IsolatedHiveInterface {
|
extension IsolatedHiveRegistrar on IsolatedHiveInterface {
|
||||||
void registerAdapters() {
|
void registerAdapters() {
|
||||||
|
registerAdapter(ModuleAdapter());
|
||||||
registerAdapter(UserLocalModelAdapter());
|
registerAdapter(UserLocalModelAdapter());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import 'dart:async';
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:rasadyar_auth/auth.dart';
|
import 'package:rasadyar_auth/auth.dart';
|
||||||
import 'package:rasadyar_auth/data/common/dio_error_handler.dart';
|
import 'package:rasadyar_auth/data/common/dio_error_handler.dart';
|
||||||
|
import 'package:rasadyar_auth/data/models/local/module/module_model.dart';
|
||||||
import 'package:rasadyar_auth/data/models/request/login_request/login_request_model.dart';
|
import 'package:rasadyar_auth/data/models/request/login_request/login_request_model.dart';
|
||||||
import 'package:rasadyar_auth/data/models/response/auth/auth_response_model.dart';
|
import 'package:rasadyar_auth/data/models/response/auth/auth_response_model.dart';
|
||||||
import 'package:rasadyar_auth/data/repositories/auth_repository_imp.dart';
|
import 'package:rasadyar_auth/data/repositories/auth_repository_imp.dart';
|
||||||
@@ -10,6 +11,8 @@ import 'package:rasadyar_auth/data/services/token_storage_service.dart';
|
|||||||
import 'package:rasadyar_auth/presentation/widget/captcha/logic.dart';
|
import 'package:rasadyar_auth/presentation/widget/captcha/logic.dart';
|
||||||
import 'package:rasadyar_core/core.dart';
|
import 'package:rasadyar_core/core.dart';
|
||||||
|
|
||||||
|
import '../../../data/models/local/user_local/user_local_model.dart';
|
||||||
|
|
||||||
enum AuthType { useAndPass, otp }
|
enum AuthType { useAndPass, otp }
|
||||||
|
|
||||||
enum AuthStatus { init }
|
enum AuthStatus { init }
|
||||||
@@ -42,6 +45,8 @@ class AuthLogic extends GetxController {
|
|||||||
|
|
||||||
AuthRepositoryImpl authRepository = diAuth.get<AuthRepositoryImpl>();
|
AuthRepositoryImpl authRepository = diAuth.get<AuthRepositoryImpl>();
|
||||||
|
|
||||||
|
final Module _module = Get.arguments;
|
||||||
|
|
||||||
void startTimer() {
|
void startTimer() {
|
||||||
_timer?.cancel();
|
_timer?.cancel();
|
||||||
secondsRemaining.value = 120;
|
secondsRemaining.value = 120;
|
||||||
@@ -73,8 +78,8 @@ class AuthLogic extends GetxController {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
void onReady() {
|
void onReady() {
|
||||||
// TODO: implement onReady
|
|
||||||
super.onReady();
|
super.onReady();
|
||||||
|
iLog('module111 : ${_module.toString()}');
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -106,14 +111,16 @@ class AuthLogic extends GetxController {
|
|||||||
|
|
||||||
Future<void> submitLoginForm() async {
|
Future<void> submitLoginForm() async {
|
||||||
if (!_isFormValid()) return;
|
if (!_isFormValid()) return;
|
||||||
|
iLog('module222 : ${_module.toString()}');
|
||||||
final loginRequestModel = _buildLoginRequest();
|
final loginRequestModel = _buildLoginRequest();
|
||||||
isLoading.value = true;
|
isLoading.value = true;
|
||||||
await safeCall<AuthResponseModel?>(
|
await safeCall<AuthResponseModel?>(
|
||||||
call: () => authRepository.login(authRequest: loginRequestModel.toJson()),
|
call: () => authRepository.login(authRequest: loginRequestModel.toJson()),
|
||||||
onSuccess: (result) async {
|
onSuccess: (result) async {
|
||||||
await tokenStorageService.saveRefreshToken(result!.refresh!);
|
await tokenStorageService.saveModule(_module);
|
||||||
await tokenStorageService.saveAccessToken(result!.access!);
|
await tokenStorageService.saveRefreshToken(result?.refresh ?? '');
|
||||||
|
await tokenStorageService.saveAccessToken(result?.access ?? '');
|
||||||
|
|
||||||
//Get.offAndToNamed(Routes.home);
|
//Get.offAndToNamed(Routes.home);
|
||||||
},
|
},
|
||||||
onError: (error, stackTrace) {
|
onError: (error, stackTrace) {
|
||||||
|
|||||||
@@ -109,7 +109,10 @@ class AuthPage extends GetView<AuthLogic> {
|
|||||||
},
|
},
|
||||||
prefixIcon: Padding(
|
prefixIcon: Padding(
|
||||||
padding: const EdgeInsets.fromLTRB(0, 8, 6, 8),
|
padding: const EdgeInsets.fromLTRB(0, 8, 6, 8),
|
||||||
child: vecWidget(Assets.vecCallSvg),
|
child: Assets.vec.callSvg.svg(
|
||||||
|
width: 12,
|
||||||
|
height: 12,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
suffixIcon:
|
suffixIcon:
|
||||||
phoneController.value.text
|
phoneController.value.text
|
||||||
@@ -168,7 +171,10 @@ class AuthPage extends GetView<AuthLogic> {
|
|||||||
labelStyle: AppFonts.yekan13,
|
labelStyle: AppFonts.yekan13,
|
||||||
prefixIcon: Padding(
|
prefixIcon: Padding(
|
||||||
padding: const EdgeInsets.fromLTRB(0, 8, 8, 8),
|
padding: const EdgeInsets.fromLTRB(0, 8, 8, 8),
|
||||||
child: vecWidget(Assets.vecKeySvg),
|
child: Assets.vec.keySvg.svg(
|
||||||
|
width: 12,
|
||||||
|
height: 12,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
boxConstraints: const BoxConstraints(
|
boxConstraints: const BoxConstraints(
|
||||||
maxHeight: 34,
|
maxHeight: 34,
|
||||||
|
|||||||
@@ -1,7 +1,16 @@
|
|||||||
|
import 'package:rasadyar_auth/data/models/local/module/module_model.dart';
|
||||||
|
import 'package:rasadyar_auth/data/models/local/user_local/user_local_model.dart';
|
||||||
import 'package:rasadyar_core/core.dart';
|
import 'package:rasadyar_core/core.dart';
|
||||||
|
|
||||||
class ModulesLogic extends GetxController {
|
class ModulesLogic extends GetxController {
|
||||||
|
|
||||||
|
List<ModuleModel> moduleList=[
|
||||||
|
ModuleModel(title: 'بازرسی', icon: Assets.icons.inspection.path, module: Module.inspection),
|
||||||
|
ModuleModel(title: 'دام', icon: Assets.icons.liveStock.path, module: Module.liveStocks),
|
||||||
|
];
|
||||||
|
|
||||||
|
|
||||||
|
RxnInt selectedIndex = RxnInt(null);
|
||||||
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -9,6 +18,9 @@ class ModulesLogic extends GetxController {
|
|||||||
super.onReady();
|
super.onReady();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void onClose() {
|
void onClose() {
|
||||||
super.onClose();
|
super.onClose();
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:rasadyar_auth/presentation/routes/pages.dart';
|
||||||
|
import 'package:rasadyar_core/core.dart';
|
||||||
|
|
||||||
import 'logic.dart';
|
import 'logic.dart';
|
||||||
|
|
||||||
@@ -8,8 +9,37 @@ class ModulesPage extends GetView<ModulesLogic> {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final ModulesLogic logic = Get.put(ModulesLogic());
|
return Scaffold(
|
||||||
|
appBar: AppBar(
|
||||||
|
title: Text(
|
||||||
|
'انتخاب سامانه',
|
||||||
|
style: AppFonts.yekan18.copyWith(color: Colors.white),
|
||||||
|
),
|
||||||
|
centerTitle: true,
|
||||||
|
backgroundColor: AppColor.blueNormal,
|
||||||
|
),
|
||||||
|
body: GridView.builder(
|
||||||
|
padding: EdgeInsets.symmetric(horizontal: 10, vertical: 20),
|
||||||
|
|
||||||
return Container();
|
itemBuilder: (context, index) {
|
||||||
|
final module = controller.moduleList[index];
|
||||||
|
return CardIcon(
|
||||||
|
title: module.title,
|
||||||
|
icon: module.icon,
|
||||||
|
onTap: () {
|
||||||
|
controller.selectedIndex.value = index;
|
||||||
|
Get.toNamed(AuthPaths.auth, arguments: module.module);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
},
|
||||||
|
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
|
||||||
|
crossAxisCount: 3,
|
||||||
|
mainAxisSpacing: 10,
|
||||||
|
crossAxisSpacing: 10,
|
||||||
|
),
|
||||||
|
physics: BouncingScrollPhysics(),
|
||||||
|
itemCount: controller.moduleList.length,
|
||||||
|
),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
import 'package:rasadyar_auth/presentation/pages/modules/logic.dart';
|
||||||
|
import 'package:rasadyar_auth/presentation/pages/modules/view.dart';
|
||||||
import 'package:rasadyar_auth/presentation/widget/captcha/logic.dart';
|
import 'package:rasadyar_auth/presentation/widget/captcha/logic.dart';
|
||||||
import 'package:rasadyar_core/core.dart';
|
import 'package:rasadyar_core/core.dart';
|
||||||
|
|
||||||
@@ -12,10 +14,9 @@ sealed class AuthPages {
|
|||||||
static List<GetPage> pages = [
|
static List<GetPage> pages = [
|
||||||
GetPage(
|
GetPage(
|
||||||
name: AuthPaths.moduleList,
|
name: AuthPaths.moduleList,
|
||||||
page: () => AuthPage(),
|
page: () => ModulesPage(),
|
||||||
binding: BindingsBuilder(() {
|
binding: BindingsBuilder(() {
|
||||||
Get.lazyPut(() => AuthLogic());
|
Get.lazyPut(() => ModulesLogic());
|
||||||
Get.lazyPut(() => CaptchaWidgetLogic());
|
|
||||||
}),
|
}),
|
||||||
),
|
),
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,10 @@ class LogoWidget extends StatelessWidget {
|
|||||||
return Column(
|
return Column(
|
||||||
children: [
|
children: [
|
||||||
Row(),
|
Row(),
|
||||||
Image.asset(Assets.imagesInnerSplash, width: 120, height: 120),
|
Assets.images.innerSplash.image(
|
||||||
|
width: 150,
|
||||||
|
height: 150,
|
||||||
|
),
|
||||||
Text(
|
Text(
|
||||||
'سامانه رصدیار',
|
'سامانه رصدیار',
|
||||||
style: AppFonts.yekan16.copyWith(color: AppColor.darkGreyNormal),
|
style: AppFonts.yekan16.copyWith(color: AppColor.darkGreyNormal),
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
library;
|
library;
|
||||||
|
|
||||||
|
|
||||||
//other packages
|
//other packages
|
||||||
export 'package:flutter_localizations/flutter_localizations.dart';
|
export 'package:flutter_localizations/flutter_localizations.dart';
|
||||||
export 'package:flutter_map/flutter_map.dart';
|
export 'package:flutter_map/flutter_map.dart';
|
||||||
@@ -7,6 +8,7 @@ export 'package:flutter_map_animations/flutter_map_animations.dart';
|
|||||||
export 'package:flutter_rating_bar/flutter_rating_bar.dart';
|
export 'package:flutter_rating_bar/flutter_rating_bar.dart';
|
||||||
export 'package:flutter_slidable/flutter_slidable.dart';
|
export 'package:flutter_slidable/flutter_slidable.dart';
|
||||||
export 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
export 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
||||||
|
export 'package:hive_ce_flutter/hive_flutter.dart';
|
||||||
//freezed
|
//freezed
|
||||||
export 'package:freezed_annotation/freezed_annotation.dart';
|
export 'package:freezed_annotation/freezed_annotation.dart';
|
||||||
export 'package:geolocator/geolocator.dart';
|
export 'package:geolocator/geolocator.dart';
|
||||||
|
|||||||
@@ -1,72 +0,0 @@
|
|||||||
///This file is automatically generated. DO NOT EDIT, all your changes would be lost.
|
|
||||||
class Assets {
|
|
||||||
Assets._();
|
|
||||||
|
|
||||||
static const String iconsAdd = 'assets/icons/add.svg';
|
|
||||||
static const String iconsArrowLeft = 'assets/icons/arrow_left.svg';
|
|
||||||
static const String iconsArrowRight = 'assets/icons/arrow_right.svg';
|
|
||||||
static const String iconsBgHeaderUserProfile = 'assets/icons/bg_header_user_profile.svg';
|
|
||||||
static const String iconsCalendar = 'assets/icons/calendar.svg';
|
|
||||||
static const String iconsCalendarSearch = 'assets/icons/calendar_search.svg';
|
|
||||||
static const String iconsCall = 'assets/icons/call.svg';
|
|
||||||
static const String iconsDiagram = 'assets/icons/diagram.svg';
|
|
||||||
static const String iconsDownload = 'assets/icons/download.svg';
|
|
||||||
static const String iconsEdit = 'assets/icons/edit.svg';
|
|
||||||
static const String iconsExcelDownload = 'assets/icons/excel_download.svg';
|
|
||||||
static const String iconsFilter = 'assets/icons/filter.svg';
|
|
||||||
static const String iconsGps = 'assets/icons/gps.svg';
|
|
||||||
static const String iconsInformation = 'assets/icons/information.svg';
|
|
||||||
static const String iconsKey = 'assets/icons/key.svg';
|
|
||||||
static const String iconsLogout = 'assets/icons/logout.svg';
|
|
||||||
static const String iconsMap = 'assets/icons/map.svg';
|
|
||||||
static const String iconsMapMarker = 'assets/icons/map_marker.svg';
|
|
||||||
static const String iconsMessageAdd = 'assets/icons/message_add.svg';
|
|
||||||
static const String iconsPdfDownload = 'assets/icons/pdf_download.svg';
|
|
||||||
static const String iconsPictureFrame = 'assets/icons/picture_frame.svg';
|
|
||||||
static const String iconsProfileCircle = 'assets/icons/profile_circle.svg';
|
|
||||||
static const String iconsProfileUser = 'assets/icons/profile_user.svg';
|
|
||||||
static const String iconsReceiptDiscount = 'assets/icons/receipt_discount.svg';
|
|
||||||
static const String iconsScan = 'assets/icons/scan.svg';
|
|
||||||
static const String iconsScanBarcode = 'assets/icons/scan_barcode.svg';
|
|
||||||
static const String iconsSecurityTime = 'assets/icons/security_time.svg';
|
|
||||||
static const String iconsSetting = 'assets/icons/setting.svg';
|
|
||||||
static const String iconsTagUser = 'assets/icons/tag_user.svg';
|
|
||||||
static const String iconsTrash = 'assets/icons/trash.svg';
|
|
||||||
static const String iconsUser = 'assets/icons/user.svg';
|
|
||||||
static const String iconsUserSquare = 'assets/icons/user_square.svg';
|
|
||||||
static const String imagesInnerSplash = 'assets/images/inner_splash.webp';
|
|
||||||
static const String imagesOutterSplash = 'assets/images/outter_splash.webp';
|
|
||||||
static const String vecAddSvg = 'assets/vec/add.svg.vec';
|
|
||||||
static const String vecArrowLeftSvg = 'assets/vec/arrow_left.svg.vec';
|
|
||||||
static const String vecArrowRightSvg = 'assets/vec/arrow_right.svg.vec';
|
|
||||||
static const String vecBgHeaderUserProfileSvg = 'assets/vec/bg_header_user_profile.svg.vec';
|
|
||||||
static const String vecCalendarSearchSvg = 'assets/vec/calendar_search.svg.vec';
|
|
||||||
static const String vecCalendarSvg = 'assets/vec/calendar.svg.vec';
|
|
||||||
static const String vecCallSvg = 'assets/vec/call.svg.vec';
|
|
||||||
static const String vecDiagramSvg = 'assets/vec/diagram.svg.vec';
|
|
||||||
static const String vecDownloadSvg = 'assets/vec/download.svg.vec';
|
|
||||||
static const String vecEditSvg = 'assets/vec/edit.svg.vec';
|
|
||||||
static const String vecExcelDownloadSvg = 'assets/vec/excel_download.svg.vec';
|
|
||||||
static const String vecFilterSvg = 'assets/vec/filter.svg.vec';
|
|
||||||
static const String vecGpsSvg = 'assets/vec/gps.svg.vec';
|
|
||||||
static const String vecInformationSvg = 'assets/vec/information.svg.vec';
|
|
||||||
static const String vecKeySvg = 'assets/vec/key.svg.vec';
|
|
||||||
static const String vecLogoutSvg = 'assets/vec/logout.svg.vec';
|
|
||||||
static const String vecMapMarkerSvg = 'assets/vec/map_marker.svg.vec';
|
|
||||||
static const String vecMapSvg = 'assets/vec/map.svg.vec';
|
|
||||||
static const String vecMessageAddSvg = 'assets/vec/message_add.svg.vec';
|
|
||||||
static const String vecPdfDownloadSvg = 'assets/vec/pdf_download.svg.vec';
|
|
||||||
static const String vecPictureFrameSvg = 'assets/vec/picture_frame.svg.vec';
|
|
||||||
static const String vecProfileCircleSvg = 'assets/vec/profile_circle.svg.vec';
|
|
||||||
static const String vecProfileUserSvg = 'assets/vec/profile_user.svg.vec';
|
|
||||||
static const String vecReceiptDiscountSvg = 'assets/vec/receipt_discount.svg.vec';
|
|
||||||
static const String vecScanBarcodeSvg = 'assets/vec/scan_barcode.svg.vec';
|
|
||||||
static const String vecScanSvg = 'assets/vec/scan.svg.vec';
|
|
||||||
static const String vecSecurityTimeSvg = 'assets/vec/security_time.svg.vec';
|
|
||||||
static const String vecSettingSvg = 'assets/vec/setting.svg.vec';
|
|
||||||
static const String vecTagUserSvg = 'assets/vec/tag_user.svg.vec';
|
|
||||||
static const String vecTrashSvg = 'assets/vec/trash.svg.vec';
|
|
||||||
static const String vecUserSquareSvg = 'assets/vec/user_square.svg.vec';
|
|
||||||
static const String vecUserSvg = 'assets/vec/user.svg.vec';
|
|
||||||
|
|
||||||
}
|
|
||||||
451
packages/core/lib/presentation/common/assets.gen.dart
Normal file
451
packages/core/lib/presentation/common/assets.gen.dart
Normal file
@@ -0,0 +1,451 @@
|
|||||||
|
/// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||||
|
/// *****************************************************
|
||||||
|
/// FlutterGen
|
||||||
|
/// *****************************************************
|
||||||
|
|
||||||
|
// coverage:ignore-file
|
||||||
|
// ignore_for_file: type=lint
|
||||||
|
// ignore_for_file: directives_ordering,unnecessary_import,implicit_dynamic_list_literal,deprecated_member_use
|
||||||
|
|
||||||
|
import 'package:flutter/services.dart';
|
||||||
|
import 'package:flutter/widgets.dart';
|
||||||
|
import 'package:flutter_svg/flutter_svg.dart' as _svg;
|
||||||
|
import 'package:vector_graphics/vector_graphics.dart' as _vg;
|
||||||
|
|
||||||
|
class $AssetsIconsGen {
|
||||||
|
const $AssetsIconsGen();
|
||||||
|
|
||||||
|
/// File path: assets/icons/add.svg
|
||||||
|
SvgGenImage get add => const SvgGenImage('assets/icons/add.svg');
|
||||||
|
|
||||||
|
/// File path: assets/icons/arrow_left.svg
|
||||||
|
SvgGenImage get arrowLeft => const SvgGenImage('assets/icons/arrow_left.svg');
|
||||||
|
|
||||||
|
/// File path: assets/icons/arrow_right.svg
|
||||||
|
SvgGenImage get arrowRight => const SvgGenImage('assets/icons/arrow_right.svg');
|
||||||
|
|
||||||
|
/// File path: assets/icons/bg_header_user_profile.svg
|
||||||
|
SvgGenImage get bgHeaderUserProfile => const SvgGenImage('assets/icons/bg_header_user_profile.svg');
|
||||||
|
|
||||||
|
/// File path: assets/icons/calendar.svg
|
||||||
|
SvgGenImage get calendar => const SvgGenImage('assets/icons/calendar.svg');
|
||||||
|
|
||||||
|
/// File path: assets/icons/calendar_search.svg
|
||||||
|
SvgGenImage get calendarSearch => const SvgGenImage('assets/icons/calendar_search.svg');
|
||||||
|
|
||||||
|
/// File path: assets/icons/call.svg
|
||||||
|
SvgGenImage get call => const SvgGenImage('assets/icons/call.svg');
|
||||||
|
|
||||||
|
/// File path: assets/icons/diagram.svg
|
||||||
|
SvgGenImage get diagram => const SvgGenImage('assets/icons/diagram.svg');
|
||||||
|
|
||||||
|
/// File path: assets/icons/download.svg
|
||||||
|
SvgGenImage get download => const SvgGenImage('assets/icons/download.svg');
|
||||||
|
|
||||||
|
/// File path: assets/icons/edit.svg
|
||||||
|
SvgGenImage get edit => const SvgGenImage('assets/icons/edit.svg');
|
||||||
|
|
||||||
|
/// File path: assets/icons/excel_download.svg
|
||||||
|
SvgGenImage get excelDownload => const SvgGenImage('assets/icons/excel_download.svg');
|
||||||
|
|
||||||
|
/// File path: assets/icons/filter.svg
|
||||||
|
SvgGenImage get filter => const SvgGenImage('assets/icons/filter.svg');
|
||||||
|
|
||||||
|
/// File path: assets/icons/gps.svg
|
||||||
|
SvgGenImage get gps => const SvgGenImage('assets/icons/gps.svg');
|
||||||
|
|
||||||
|
/// File path: assets/icons/information.svg
|
||||||
|
SvgGenImage get information => const SvgGenImage('assets/icons/information.svg');
|
||||||
|
|
||||||
|
/// File path: assets/icons/inspection.svg
|
||||||
|
SvgGenImage get inspection => const SvgGenImage('assets/icons/inspection.svg');
|
||||||
|
|
||||||
|
/// File path: assets/icons/key.svg
|
||||||
|
SvgGenImage get key => const SvgGenImage('assets/icons/key.svg');
|
||||||
|
|
||||||
|
/// File path: assets/icons/liveStock.svg
|
||||||
|
SvgGenImage get liveStock => const SvgGenImage('assets/icons/liveStock.svg');
|
||||||
|
|
||||||
|
/// File path: assets/icons/logout.svg
|
||||||
|
SvgGenImage get logout => const SvgGenImage('assets/icons/logout.svg');
|
||||||
|
|
||||||
|
/// File path: assets/icons/map.svg
|
||||||
|
SvgGenImage get map => const SvgGenImage('assets/icons/map.svg');
|
||||||
|
|
||||||
|
/// File path: assets/icons/map_marker.svg
|
||||||
|
SvgGenImage get mapMarker => const SvgGenImage('assets/icons/map_marker.svg');
|
||||||
|
|
||||||
|
/// File path: assets/icons/message_add.svg
|
||||||
|
SvgGenImage get messageAdd => const SvgGenImage('assets/icons/message_add.svg');
|
||||||
|
|
||||||
|
/// File path: assets/icons/pdf_download.svg
|
||||||
|
SvgGenImage get pdfDownload => const SvgGenImage('assets/icons/pdf_download.svg');
|
||||||
|
|
||||||
|
/// File path: assets/icons/picture_frame.svg
|
||||||
|
SvgGenImage get pictureFrame => const SvgGenImage('assets/icons/picture_frame.svg');
|
||||||
|
|
||||||
|
/// File path: assets/icons/profile_circle.svg
|
||||||
|
SvgGenImage get profileCircle => const SvgGenImage('assets/icons/profile_circle.svg');
|
||||||
|
|
||||||
|
/// File path: assets/icons/profile_user.svg
|
||||||
|
SvgGenImage get profileUser => const SvgGenImage('assets/icons/profile_user.svg');
|
||||||
|
|
||||||
|
/// File path: assets/icons/receipt_discount.svg
|
||||||
|
SvgGenImage get receiptDiscount => const SvgGenImage('assets/icons/receipt_discount.svg');
|
||||||
|
|
||||||
|
/// File path: assets/icons/scan.svg
|
||||||
|
SvgGenImage get scan => const SvgGenImage('assets/icons/scan.svg');
|
||||||
|
|
||||||
|
/// File path: assets/icons/scan_barcode.svg
|
||||||
|
SvgGenImage get scanBarcode => const SvgGenImage('assets/icons/scan_barcode.svg');
|
||||||
|
|
||||||
|
/// File path: assets/icons/security_time.svg
|
||||||
|
SvgGenImage get securityTime => const SvgGenImage('assets/icons/security_time.svg');
|
||||||
|
|
||||||
|
/// File path: assets/icons/setting.svg
|
||||||
|
SvgGenImage get setting => const SvgGenImage('assets/icons/setting.svg');
|
||||||
|
|
||||||
|
/// File path: assets/icons/tag_user.svg
|
||||||
|
SvgGenImage get tagUser => const SvgGenImage('assets/icons/tag_user.svg');
|
||||||
|
|
||||||
|
/// File path: assets/icons/trash.svg
|
||||||
|
SvgGenImage get trash => const SvgGenImage('assets/icons/trash.svg');
|
||||||
|
|
||||||
|
/// File path: assets/icons/user.svg
|
||||||
|
SvgGenImage get user => const SvgGenImage('assets/icons/user.svg');
|
||||||
|
|
||||||
|
/// File path: assets/icons/user_square.svg
|
||||||
|
SvgGenImage get userSquare => const SvgGenImage('assets/icons/user_square.svg');
|
||||||
|
|
||||||
|
/// List of all assets
|
||||||
|
List<SvgGenImage> get values => [
|
||||||
|
add,
|
||||||
|
arrowLeft,
|
||||||
|
arrowRight,
|
||||||
|
bgHeaderUserProfile,
|
||||||
|
calendar,
|
||||||
|
calendarSearch,
|
||||||
|
call,
|
||||||
|
diagram,
|
||||||
|
download,
|
||||||
|
edit,
|
||||||
|
excelDownload,
|
||||||
|
filter,
|
||||||
|
gps,
|
||||||
|
information,
|
||||||
|
inspection,
|
||||||
|
key,
|
||||||
|
liveStock,
|
||||||
|
logout,
|
||||||
|
map,
|
||||||
|
mapMarker,
|
||||||
|
messageAdd,
|
||||||
|
pdfDownload,
|
||||||
|
pictureFrame,
|
||||||
|
profileCircle,
|
||||||
|
profileUser,
|
||||||
|
receiptDiscount,
|
||||||
|
scan,
|
||||||
|
scanBarcode,
|
||||||
|
securityTime,
|
||||||
|
setting,
|
||||||
|
tagUser,
|
||||||
|
trash,
|
||||||
|
user,
|
||||||
|
userSquare,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
class $AssetsImagesGen {
|
||||||
|
const $AssetsImagesGen();
|
||||||
|
|
||||||
|
/// File path: assets/images/inner_splash.webp
|
||||||
|
AssetGenImage get innerSplash => const AssetGenImage('assets/images/inner_splash.webp');
|
||||||
|
|
||||||
|
/// File path: assets/images/outter_splash.webp
|
||||||
|
AssetGenImage get outterSplash => const AssetGenImage('assets/images/outter_splash.webp');
|
||||||
|
|
||||||
|
/// List of all assets
|
||||||
|
List<AssetGenImage> get values => [innerSplash, outterSplash];
|
||||||
|
}
|
||||||
|
|
||||||
|
class $AssetsVecGen {
|
||||||
|
const $AssetsVecGen();
|
||||||
|
|
||||||
|
/// File path: assets/vec/add.svg.vec
|
||||||
|
SvgGenImage get addSvg => const SvgGenImage.vec('assets/vec/add.svg.vec');
|
||||||
|
|
||||||
|
/// File path: assets/vec/arrow_left.svg.vec
|
||||||
|
SvgGenImage get arrowLeftSvg => const SvgGenImage.vec('assets/vec/arrow_left.svg.vec');
|
||||||
|
|
||||||
|
/// File path: assets/vec/arrow_right.svg.vec
|
||||||
|
SvgGenImage get arrowRightSvg => const SvgGenImage.vec('assets/vec/arrow_right.svg.vec');
|
||||||
|
|
||||||
|
/// File path: assets/vec/bg_header_user_profile.svg.vec
|
||||||
|
SvgGenImage get bgHeaderUserProfileSvg => const SvgGenImage.vec('assets/vec/bg_header_user_profile.svg.vec');
|
||||||
|
|
||||||
|
/// File path: assets/vec/calendar.svg.vec
|
||||||
|
SvgGenImage get calendarSvg => const SvgGenImage.vec('assets/vec/calendar.svg.vec');
|
||||||
|
|
||||||
|
/// File path: assets/vec/calendar_search.svg.vec
|
||||||
|
SvgGenImage get calendarSearchSvg => const SvgGenImage.vec('assets/vec/calendar_search.svg.vec');
|
||||||
|
|
||||||
|
/// File path: assets/vec/call.svg.vec
|
||||||
|
SvgGenImage get callSvg => const SvgGenImage.vec('assets/vec/call.svg.vec');
|
||||||
|
|
||||||
|
/// File path: assets/vec/diagram.svg.vec
|
||||||
|
SvgGenImage get diagramSvg => const SvgGenImage.vec('assets/vec/diagram.svg.vec');
|
||||||
|
|
||||||
|
/// File path: assets/vec/download.svg.vec
|
||||||
|
SvgGenImage get downloadSvg => const SvgGenImage.vec('assets/vec/download.svg.vec');
|
||||||
|
|
||||||
|
/// File path: assets/vec/edit.svg.vec
|
||||||
|
SvgGenImage get editSvg => const SvgGenImage.vec('assets/vec/edit.svg.vec');
|
||||||
|
|
||||||
|
/// File path: assets/vec/excel_download.svg.vec
|
||||||
|
SvgGenImage get excelDownloadSvg => const SvgGenImage.vec('assets/vec/excel_download.svg.vec');
|
||||||
|
|
||||||
|
/// File path: assets/vec/filter.svg.vec
|
||||||
|
SvgGenImage get filterSvg => const SvgGenImage.vec('assets/vec/filter.svg.vec');
|
||||||
|
|
||||||
|
/// File path: assets/vec/gps.svg.vec
|
||||||
|
SvgGenImage get gpsSvg => const SvgGenImage.vec('assets/vec/gps.svg.vec');
|
||||||
|
|
||||||
|
/// File path: assets/vec/information.svg.vec
|
||||||
|
SvgGenImage get informationSvg => const SvgGenImage.vec('assets/vec/information.svg.vec');
|
||||||
|
|
||||||
|
/// File path: assets/vec/inspection.svg.vec
|
||||||
|
SvgGenImage get inspectionSvg => const SvgGenImage.vec('assets/vec/inspection.svg.vec');
|
||||||
|
|
||||||
|
/// File path: assets/vec/key.svg.vec
|
||||||
|
SvgGenImage get keySvg => const SvgGenImage.vec('assets/vec/key.svg.vec');
|
||||||
|
|
||||||
|
/// File path: assets/vec/liveStock.svg.vec
|
||||||
|
SvgGenImage get liveStockSvg => const SvgGenImage.vec('assets/vec/liveStock.svg.vec');
|
||||||
|
|
||||||
|
/// File path: assets/vec/logout.svg.vec
|
||||||
|
SvgGenImage get logoutSvg => const SvgGenImage.vec('assets/vec/logout.svg.vec');
|
||||||
|
|
||||||
|
/// File path: assets/vec/map.svg.vec
|
||||||
|
SvgGenImage get mapSvg => const SvgGenImage.vec('assets/vec/map.svg.vec');
|
||||||
|
|
||||||
|
/// File path: assets/vec/map_marker.svg.vec
|
||||||
|
SvgGenImage get mapMarkerSvg => const SvgGenImage.vec('assets/vec/map_marker.svg.vec');
|
||||||
|
|
||||||
|
/// File path: assets/vec/message_add.svg.vec
|
||||||
|
SvgGenImage get messageAddSvg => const SvgGenImage.vec('assets/vec/message_add.svg.vec');
|
||||||
|
|
||||||
|
/// File path: assets/vec/pdf_download.svg.vec
|
||||||
|
SvgGenImage get pdfDownloadSvg => const SvgGenImage.vec('assets/vec/pdf_download.svg.vec');
|
||||||
|
|
||||||
|
/// File path: assets/vec/picture_frame.svg.vec
|
||||||
|
SvgGenImage get pictureFrameSvg => const SvgGenImage.vec('assets/vec/picture_frame.svg.vec');
|
||||||
|
|
||||||
|
/// File path: assets/vec/profile_circle.svg.vec
|
||||||
|
SvgGenImage get profileCircleSvg => const SvgGenImage.vec('assets/vec/profile_circle.svg.vec');
|
||||||
|
|
||||||
|
/// File path: assets/vec/profile_user.svg.vec
|
||||||
|
SvgGenImage get profileUserSvg => const SvgGenImage.vec('assets/vec/profile_user.svg.vec');
|
||||||
|
|
||||||
|
/// File path: assets/vec/receipt_discount.svg.vec
|
||||||
|
SvgGenImage get receiptDiscountSvg => const SvgGenImage.vec('assets/vec/receipt_discount.svg.vec');
|
||||||
|
|
||||||
|
/// File path: assets/vec/scan.svg.vec
|
||||||
|
SvgGenImage get scanSvg => const SvgGenImage.vec('assets/vec/scan.svg.vec');
|
||||||
|
|
||||||
|
/// File path: assets/vec/scan_barcode.svg.vec
|
||||||
|
SvgGenImage get scanBarcodeSvg => const SvgGenImage.vec('assets/vec/scan_barcode.svg.vec');
|
||||||
|
|
||||||
|
/// File path: assets/vec/security_time.svg.vec
|
||||||
|
SvgGenImage get securityTimeSvg => const SvgGenImage.vec('assets/vec/security_time.svg.vec');
|
||||||
|
|
||||||
|
/// File path: assets/vec/setting.svg.vec
|
||||||
|
SvgGenImage get settingSvg => const SvgGenImage.vec('assets/vec/setting.svg.vec');
|
||||||
|
|
||||||
|
/// File path: assets/vec/tag_user.svg.vec
|
||||||
|
SvgGenImage get tagUserSvg => const SvgGenImage.vec('assets/vec/tag_user.svg.vec');
|
||||||
|
|
||||||
|
/// File path: assets/vec/trash.svg.vec
|
||||||
|
SvgGenImage get trashSvg => const SvgGenImage.vec('assets/vec/trash.svg.vec');
|
||||||
|
|
||||||
|
/// File path: assets/vec/user.svg.vec
|
||||||
|
SvgGenImage get userSvg => const SvgGenImage.vec('assets/vec/user.svg.vec');
|
||||||
|
|
||||||
|
/// File path: assets/vec/user_square.svg.vec
|
||||||
|
SvgGenImage get userSquareSvg => const SvgGenImage.vec('assets/vec/user_square.svg.vec');
|
||||||
|
|
||||||
|
/// List of all assets
|
||||||
|
List<SvgGenImage> get values => [
|
||||||
|
addSvg,
|
||||||
|
arrowLeftSvg,
|
||||||
|
arrowRightSvg,
|
||||||
|
bgHeaderUserProfileSvg,
|
||||||
|
calendarSvg,
|
||||||
|
calendarSearchSvg,
|
||||||
|
callSvg,
|
||||||
|
diagramSvg,
|
||||||
|
downloadSvg,
|
||||||
|
editSvg,
|
||||||
|
excelDownloadSvg,
|
||||||
|
filterSvg,
|
||||||
|
gpsSvg,
|
||||||
|
informationSvg,
|
||||||
|
inspectionSvg,
|
||||||
|
keySvg,
|
||||||
|
liveStockSvg,
|
||||||
|
logoutSvg,
|
||||||
|
mapSvg,
|
||||||
|
mapMarkerSvg,
|
||||||
|
messageAddSvg,
|
||||||
|
pdfDownloadSvg,
|
||||||
|
pictureFrameSvg,
|
||||||
|
profileCircleSvg,
|
||||||
|
profileUserSvg,
|
||||||
|
receiptDiscountSvg,
|
||||||
|
scanSvg,
|
||||||
|
scanBarcodeSvg,
|
||||||
|
securityTimeSvg,
|
||||||
|
settingSvg,
|
||||||
|
tagUserSvg,
|
||||||
|
trashSvg,
|
||||||
|
userSvg,
|
||||||
|
userSquareSvg,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
class Assets {
|
||||||
|
const Assets._();
|
||||||
|
|
||||||
|
static const $AssetsIconsGen icons = $AssetsIconsGen();
|
||||||
|
static const $AssetsImagesGen images = $AssetsImagesGen();
|
||||||
|
static const $AssetsVecGen vec = $AssetsVecGen();
|
||||||
|
}
|
||||||
|
|
||||||
|
class AssetGenImage {
|
||||||
|
const AssetGenImage(this._assetName, {this.size, this.flavors = const {}});
|
||||||
|
|
||||||
|
final String _assetName;
|
||||||
|
|
||||||
|
final Size? size;
|
||||||
|
final Set<String> flavors;
|
||||||
|
|
||||||
|
Image image({
|
||||||
|
Key? key,
|
||||||
|
AssetBundle? bundle,
|
||||||
|
ImageFrameBuilder? frameBuilder,
|
||||||
|
ImageErrorWidgetBuilder? errorBuilder,
|
||||||
|
String? semanticLabel,
|
||||||
|
bool excludeFromSemantics = false,
|
||||||
|
double? scale,
|
||||||
|
double? width,
|
||||||
|
double? height,
|
||||||
|
Color? color,
|
||||||
|
Animation<double>? opacity,
|
||||||
|
BlendMode? colorBlendMode,
|
||||||
|
BoxFit? fit,
|
||||||
|
AlignmentGeometry alignment = Alignment.center,
|
||||||
|
ImageRepeat repeat = ImageRepeat.noRepeat,
|
||||||
|
Rect? centerSlice,
|
||||||
|
bool matchTextDirection = false,
|
||||||
|
bool gaplessPlayback = true,
|
||||||
|
bool isAntiAlias = false,
|
||||||
|
String? package,
|
||||||
|
FilterQuality filterQuality = FilterQuality.medium,
|
||||||
|
int? cacheWidth,
|
||||||
|
int? cacheHeight,
|
||||||
|
}) {
|
||||||
|
return Image.asset(
|
||||||
|
_assetName,
|
||||||
|
key: key,
|
||||||
|
bundle: bundle,
|
||||||
|
frameBuilder: frameBuilder,
|
||||||
|
errorBuilder: errorBuilder,
|
||||||
|
semanticLabel: semanticLabel,
|
||||||
|
excludeFromSemantics: excludeFromSemantics,
|
||||||
|
scale: scale,
|
||||||
|
width: width,
|
||||||
|
height: height,
|
||||||
|
color: color,
|
||||||
|
opacity: opacity,
|
||||||
|
colorBlendMode: colorBlendMode,
|
||||||
|
fit: fit,
|
||||||
|
alignment: alignment,
|
||||||
|
repeat: repeat,
|
||||||
|
centerSlice: centerSlice,
|
||||||
|
matchTextDirection: matchTextDirection,
|
||||||
|
gaplessPlayback: gaplessPlayback,
|
||||||
|
isAntiAlias: isAntiAlias,
|
||||||
|
package: package,
|
||||||
|
filterQuality: filterQuality,
|
||||||
|
cacheWidth: cacheWidth,
|
||||||
|
cacheHeight: cacheHeight,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
ImageProvider provider({AssetBundle? bundle, String? package}) {
|
||||||
|
return AssetImage(_assetName, bundle: bundle, package: package);
|
||||||
|
}
|
||||||
|
|
||||||
|
String get path => _assetName;
|
||||||
|
|
||||||
|
String get keyName => _assetName;
|
||||||
|
}
|
||||||
|
|
||||||
|
class SvgGenImage {
|
||||||
|
const SvgGenImage(this._assetName, {this.size, this.flavors = const {}}) : _isVecFormat = false;
|
||||||
|
|
||||||
|
const SvgGenImage.vec(this._assetName, {this.size, this.flavors = const {}}) : _isVecFormat = true;
|
||||||
|
|
||||||
|
final String _assetName;
|
||||||
|
final Size? size;
|
||||||
|
final Set<String> flavors;
|
||||||
|
final bool _isVecFormat;
|
||||||
|
|
||||||
|
_svg.SvgPicture svg({
|
||||||
|
Key? key,
|
||||||
|
bool matchTextDirection = false,
|
||||||
|
AssetBundle? bundle,
|
||||||
|
String? package,
|
||||||
|
double? width,
|
||||||
|
double? height,
|
||||||
|
BoxFit fit = BoxFit.contain,
|
||||||
|
AlignmentGeometry alignment = Alignment.center,
|
||||||
|
bool allowDrawingOutsideViewBox = false,
|
||||||
|
WidgetBuilder? placeholderBuilder,
|
||||||
|
String? semanticsLabel,
|
||||||
|
bool excludeFromSemantics = false,
|
||||||
|
_svg.SvgTheme? theme,
|
||||||
|
ColorFilter? colorFilter,
|
||||||
|
Clip clipBehavior = Clip.hardEdge,
|
||||||
|
@deprecated Color? color,
|
||||||
|
@deprecated BlendMode colorBlendMode = BlendMode.srcIn,
|
||||||
|
@deprecated bool cacheColorFilter = false,
|
||||||
|
}) {
|
||||||
|
final _svg.BytesLoader loader;
|
||||||
|
if (_isVecFormat) {
|
||||||
|
loader = _vg.AssetBytesLoader(_assetName, assetBundle: bundle, packageName: package);
|
||||||
|
} else {
|
||||||
|
loader = _svg.SvgAssetLoader(_assetName, assetBundle: bundle, packageName: package, theme: theme);
|
||||||
|
}
|
||||||
|
return _svg.SvgPicture(
|
||||||
|
loader,
|
||||||
|
key: key,
|
||||||
|
matchTextDirection: matchTextDirection,
|
||||||
|
width: width,
|
||||||
|
height: height,
|
||||||
|
fit: fit,
|
||||||
|
alignment: alignment,
|
||||||
|
allowDrawingOutsideViewBox: allowDrawingOutsideViewBox,
|
||||||
|
placeholderBuilder: placeholderBuilder,
|
||||||
|
semanticsLabel: semanticsLabel,
|
||||||
|
excludeFromSemantics: excludeFromSemantics,
|
||||||
|
colorFilter: colorFilter ?? (color == null ? null : ColorFilter.mode(color, colorBlendMode)),
|
||||||
|
clipBehavior: clipBehavior,
|
||||||
|
cacheColorFilter: cacheColorFilter,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
String get path => _assetName;
|
||||||
|
|
||||||
|
String get keyName => _assetName;
|
||||||
|
}
|
||||||
@@ -1,3 +1,3 @@
|
|||||||
export 'app_color.dart';
|
export 'app_color.dart';
|
||||||
export 'app_fonts.dart';
|
export 'app_fonts.dart';
|
||||||
export 'assets.dart';
|
export 'assets.gen.dart';
|
||||||
|
|||||||
15
packages/core/lib/presentation/common/fonts.gen.dart
Normal file
15
packages/core/lib/presentation/common/fonts.gen.dart
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
/// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||||
|
/// *****************************************************
|
||||||
|
/// FlutterGen
|
||||||
|
/// *****************************************************
|
||||||
|
|
||||||
|
// coverage:ignore-file
|
||||||
|
// ignore_for_file: type=lint
|
||||||
|
// ignore_for_file: directives_ordering,unnecessary_import,implicit_dynamic_list_literal,deprecated_member_use
|
||||||
|
|
||||||
|
class FontFamily {
|
||||||
|
FontFamily._();
|
||||||
|
|
||||||
|
/// Font family: yekan
|
||||||
|
static const String yekan = 'yekan';
|
||||||
|
}
|
||||||
@@ -3,7 +3,7 @@ import 'package:rasadyar_core/core.dart';
|
|||||||
|
|
||||||
class WaveBottomNavigationItem {
|
class WaveBottomNavigationItem {
|
||||||
final String title;
|
final String title;
|
||||||
final String icon;
|
final Widget icon;
|
||||||
|
|
||||||
WaveBottomNavigationItem({required this.title, required this.icon});
|
WaveBottomNavigationItem({required this.title, required this.icon});
|
||||||
}
|
}
|
||||||
@@ -112,12 +112,7 @@ class _WaveBottomNavigationState extends State<WaveBottomNavigation> {
|
|||||||
children: [
|
children: [
|
||||||
Tooltip(
|
Tooltip(
|
||||||
message: item.title,
|
message: item.title,
|
||||||
child: vecWidget(
|
child: item.icon
|
||||||
item.icon,
|
|
||||||
color: Colors.white,
|
|
||||||
width: 32,
|
|
||||||
height: 32,
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
|
|
||||||
/* Visibility(
|
/* Visibility(
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:rasadyar_core/presentation/common/app_color.dart';
|
import 'package:rasadyar_core/presentation/common/app_color.dart';
|
||||||
import 'package:rasadyar_core/presentation/common/assets.dart';
|
|
||||||
import 'package:rasadyar_core/presentation/utils/color_utils.dart';
|
import 'package:rasadyar_core/presentation/utils/color_utils.dart';
|
||||||
import 'package:rasadyar_core/presentation/widget/vec_widget.dart';
|
import '../../common/assets.gen.dart';
|
||||||
|
|
||||||
class RFab extends StatefulWidget {
|
class RFab extends StatefulWidget {
|
||||||
final VoidCallback? onPressed;
|
final VoidCallback? onPressed;
|
||||||
@@ -22,7 +21,10 @@ class RFab extends StatefulWidget {
|
|||||||
RFab.smallAdd({required VoidCallback? onPressed, Key? key})
|
RFab.smallAdd({required VoidCallback? onPressed, Key? key})
|
||||||
: this.small(
|
: this.small(
|
||||||
onPressed: onPressed,
|
onPressed: onPressed,
|
||||||
icon: vecWidget(Assets.vecAddSvg),
|
icon: Assets.vec.addSvg.svg(
|
||||||
|
width: 20,
|
||||||
|
height: 20,
|
||||||
|
),
|
||||||
backgroundColor: AppColor.greenNormal,
|
backgroundColor: AppColor.greenNormal,
|
||||||
key: key,
|
key: key,
|
||||||
);
|
);
|
||||||
@@ -30,7 +32,10 @@ class RFab extends StatefulWidget {
|
|||||||
RFab.add({required VoidCallback? onPressed, Key? key})
|
RFab.add({required VoidCallback? onPressed, Key? key})
|
||||||
: this(
|
: this(
|
||||||
onPressed: onPressed,
|
onPressed: onPressed,
|
||||||
icon: vecWidget(Assets.vecAddSvg),
|
icon: Assets.vec.addSvg.svg(
|
||||||
|
width: 20,
|
||||||
|
height: 20,
|
||||||
|
),
|
||||||
backgroundColor: AppColor.greenNormal,
|
backgroundColor: AppColor.greenNormal,
|
||||||
key: key,
|
key: key,
|
||||||
);
|
);
|
||||||
@@ -41,7 +46,10 @@ class RFab extends StatefulWidget {
|
|||||||
RFab.smallEdit({required VoidCallback? onPressed, Key? key})
|
RFab.smallEdit({required VoidCallback? onPressed, Key? key})
|
||||||
: this.small(
|
: this.small(
|
||||||
onPressed: onPressed,
|
onPressed: onPressed,
|
||||||
icon: vecWidget(Assets.vecEditSvg),
|
icon: Assets.vec.addSvg.svg(
|
||||||
|
width: 20,
|
||||||
|
height: 20,
|
||||||
|
),
|
||||||
backgroundColor: AppColor.blueNormal,
|
backgroundColor: AppColor.blueNormal,
|
||||||
key: key,
|
key: key,
|
||||||
);
|
);
|
||||||
@@ -49,7 +57,10 @@ class RFab extends StatefulWidget {
|
|||||||
RFab.edit({required VoidCallback? onPressed, Key? key})
|
RFab.edit({required VoidCallback? onPressed, Key? key})
|
||||||
: this(
|
: this(
|
||||||
onPressed: onPressed,
|
onPressed: onPressed,
|
||||||
icon: vecWidget(Assets.vecEditSvg),
|
icon: Assets.vec.addSvg.svg(
|
||||||
|
width: 20,
|
||||||
|
height: 20,
|
||||||
|
),
|
||||||
backgroundColor: AppColor.blueNormal,
|
backgroundColor: AppColor.blueNormal,
|
||||||
key: key,
|
key: key,
|
||||||
);
|
);
|
||||||
@@ -60,7 +71,10 @@ class RFab extends StatefulWidget {
|
|||||||
RFab.smallDelete({required VoidCallback? onPressed, Key? key})
|
RFab.smallDelete({required VoidCallback? onPressed, Key? key})
|
||||||
: this.small(
|
: this.small(
|
||||||
onPressed: onPressed,
|
onPressed: onPressed,
|
||||||
icon: vecWidget(Assets.vecTrashSvg),
|
icon: Assets.vec.trashSvg.svg(
|
||||||
|
width: 20,
|
||||||
|
height: 20,
|
||||||
|
),
|
||||||
backgroundColor: AppColor.redNormal,
|
backgroundColor: AppColor.redNormal,
|
||||||
key: key,
|
key: key,
|
||||||
);
|
);
|
||||||
@@ -68,7 +82,10 @@ class RFab extends StatefulWidget {
|
|||||||
RFab.delete({required VoidCallback? onPressed, Key? key})
|
RFab.delete({required VoidCallback? onPressed, Key? key})
|
||||||
: this(
|
: this(
|
||||||
onPressed: onPressed,
|
onPressed: onPressed,
|
||||||
icon: vecWidget(Assets.vecTrashSvg),
|
icon: Assets.vec.trashSvg.svg(
|
||||||
|
width: 20,
|
||||||
|
height: 20,
|
||||||
|
),
|
||||||
backgroundColor: AppColor.redNormal,
|
backgroundColor: AppColor.redNormal,
|
||||||
key: key,
|
key: key,
|
||||||
);
|
);
|
||||||
@@ -79,7 +96,10 @@ class RFab extends StatefulWidget {
|
|||||||
RFab.smallAction({required VoidCallback? onPressed, Key? key})
|
RFab.smallAction({required VoidCallback? onPressed, Key? key})
|
||||||
: this.small(
|
: this.small(
|
||||||
onPressed: onPressed,
|
onPressed: onPressed,
|
||||||
icon: vecWidget(Assets.vecScanSvg),
|
icon: Assets.vec.scanSvg.svg(
|
||||||
|
width: 20,
|
||||||
|
height: 20,
|
||||||
|
),
|
||||||
backgroundColor: AppColor.blueNormal,
|
backgroundColor: AppColor.blueNormal,
|
||||||
key: key,
|
key: key,
|
||||||
);
|
);
|
||||||
@@ -87,7 +107,10 @@ class RFab extends StatefulWidget {
|
|||||||
RFab.action({required VoidCallback? onPressed, Key? key})
|
RFab.action({required VoidCallback? onPressed, Key? key})
|
||||||
: this(
|
: this(
|
||||||
onPressed: onPressed,
|
onPressed: onPressed,
|
||||||
icon: vecWidget(Assets.vecScanSvg),
|
icon: Assets.vec.scanSvg.svg(
|
||||||
|
width: 20,
|
||||||
|
height: 20,
|
||||||
|
),
|
||||||
backgroundColor: AppColor.blueNormal,
|
backgroundColor: AppColor.blueNormal,
|
||||||
key: key,
|
key: key,
|
||||||
);
|
);
|
||||||
@@ -98,7 +121,10 @@ class RFab extends StatefulWidget {
|
|||||||
RFab.smallFilter({required VoidCallback? onPressed, Key? key})
|
RFab.smallFilter({required VoidCallback? onPressed, Key? key})
|
||||||
: this.small(
|
: this.small(
|
||||||
onPressed: onPressed,
|
onPressed: onPressed,
|
||||||
icon: vecWidget(Assets.vecFilterSvg),
|
icon: Assets.vec.scanSvg.svg(
|
||||||
|
width: 20,
|
||||||
|
height: 20,
|
||||||
|
),
|
||||||
backgroundColor: AppColor.blueNormal,
|
backgroundColor: AppColor.blueNormal,
|
||||||
key: key,
|
key: key,
|
||||||
);
|
);
|
||||||
@@ -106,7 +132,10 @@ class RFab extends StatefulWidget {
|
|||||||
RFab.filter({required VoidCallback? onPressed, Key? key})
|
RFab.filter({required VoidCallback? onPressed, Key? key})
|
||||||
: this(
|
: this(
|
||||||
onPressed: onPressed,
|
onPressed: onPressed,
|
||||||
icon: vecWidget(Assets.vecFilterSvg),
|
icon: Assets.vec.scanSvg.svg(
|
||||||
|
width: 20,
|
||||||
|
height: 20,
|
||||||
|
),
|
||||||
backgroundColor: AppColor.blueNormal,
|
backgroundColor: AppColor.blueNormal,
|
||||||
key: key,
|
key: key,
|
||||||
);
|
);
|
||||||
@@ -117,7 +146,10 @@ class RFab extends StatefulWidget {
|
|||||||
RFab.smallDownload({required VoidCallback? onPressed, Key? key})
|
RFab.smallDownload({required VoidCallback? onPressed, Key? key})
|
||||||
: this.small(
|
: this.small(
|
||||||
onPressed: onPressed,
|
onPressed: onPressed,
|
||||||
icon: vecWidget(Assets.vecDownloadSvg),
|
icon: Assets.vec.downloadSvg.svg(
|
||||||
|
width: 20,
|
||||||
|
height: 20,
|
||||||
|
),
|
||||||
backgroundColor: AppColor.blueNormal,
|
backgroundColor: AppColor.blueNormal,
|
||||||
key: key,
|
key: key,
|
||||||
);
|
);
|
||||||
@@ -125,7 +157,10 @@ class RFab extends StatefulWidget {
|
|||||||
RFab.download({required VoidCallback? onPressed, Key? key})
|
RFab.download({required VoidCallback? onPressed, Key? key})
|
||||||
: this(
|
: this(
|
||||||
onPressed: onPressed,
|
onPressed: onPressed,
|
||||||
icon: vecWidget(Assets.vecDownloadSvg),
|
icon: Assets.vec.downloadSvg.svg(
|
||||||
|
width: 20,
|
||||||
|
height: 20,
|
||||||
|
),
|
||||||
backgroundColor: AppColor.blueNormal,
|
backgroundColor: AppColor.blueNormal,
|
||||||
key: key,
|
key: key,
|
||||||
);
|
);
|
||||||
@@ -136,7 +171,10 @@ class RFab extends StatefulWidget {
|
|||||||
RFab.smallExcel({required VoidCallback? onPressed, Key? key})
|
RFab.smallExcel({required VoidCallback? onPressed, Key? key})
|
||||||
: this.small(
|
: this.small(
|
||||||
onPressed: onPressed,
|
onPressed: onPressed,
|
||||||
icon: vecWidget(Assets.vecDownloadSvg),
|
icon: Assets.vec.excelDownloadSvg.svg(
|
||||||
|
width: 20,
|
||||||
|
height: 20,
|
||||||
|
),
|
||||||
backgroundColor: AppColor.greenDark,
|
backgroundColor: AppColor.greenDark,
|
||||||
key: key,
|
key: key,
|
||||||
);
|
);
|
||||||
@@ -144,7 +182,10 @@ class RFab extends StatefulWidget {
|
|||||||
RFab.excel({required VoidCallback? onPressed, Key? key})
|
RFab.excel({required VoidCallback? onPressed, Key? key})
|
||||||
: this(
|
: this(
|
||||||
onPressed: onPressed,
|
onPressed: onPressed,
|
||||||
icon: vecWidget(Assets.vecDownloadSvg),
|
icon: Assets.vec.excelDownloadSvg.svg(
|
||||||
|
width: 20,
|
||||||
|
height: 20,
|
||||||
|
),
|
||||||
backgroundColor: AppColor.greenDark,
|
backgroundColor: AppColor.greenDark,
|
||||||
key: key,
|
key: key,
|
||||||
);
|
);
|
||||||
@@ -155,7 +196,10 @@ class RFab extends StatefulWidget {
|
|||||||
RFab.smallBack({required VoidCallback? onPressed, Key? key})
|
RFab.smallBack({required VoidCallback? onPressed, Key? key})
|
||||||
: this.small(
|
: this.small(
|
||||||
onPressed: onPressed,
|
onPressed: onPressed,
|
||||||
icon: vecWidget(Assets.vecArrowLeftSvg),
|
icon: Assets.vec.arrowLeftSvg.svg(
|
||||||
|
width: 20,
|
||||||
|
height: 20,
|
||||||
|
),
|
||||||
backgroundColor: AppColor.blueNormal,
|
backgroundColor: AppColor.blueNormal,
|
||||||
key: key,
|
key: key,
|
||||||
);
|
);
|
||||||
@@ -163,7 +207,10 @@ class RFab extends StatefulWidget {
|
|||||||
RFab.back({required VoidCallback? onPressed, Key? key})
|
RFab.back({required VoidCallback? onPressed, Key? key})
|
||||||
: this(
|
: this(
|
||||||
onPressed: onPressed,
|
onPressed: onPressed,
|
||||||
icon: vecWidget(Assets.vecArrowLeftSvg),
|
icon: Assets.vec.arrowLeftSvg.svg(
|
||||||
|
width: 20,
|
||||||
|
height: 20,
|
||||||
|
),
|
||||||
backgroundColor: AppColor.blueNormal,
|
backgroundColor: AppColor.blueNormal,
|
||||||
key: key,
|
key: key,
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:rasadyar_core/presentation/common/app_color.dart';
|
import 'package:rasadyar_core/presentation/common/app_color.dart';
|
||||||
import 'package:rasadyar_core/presentation/common/assets.dart';
|
import 'package:rasadyar_core/presentation/common/assets.gen.dart';
|
||||||
import 'package:rasadyar_core/presentation/utils/color_utils.dart';
|
import 'package:rasadyar_core/presentation/utils/color_utils.dart';
|
||||||
import 'package:rasadyar_core/presentation/widget/vec_widget.dart';
|
|
||||||
|
|
||||||
class RFabOutlined extends StatefulWidget {
|
class RFabOutlined extends StatefulWidget {
|
||||||
final Widget icon;
|
final Widget icon;
|
||||||
@@ -69,10 +68,13 @@ class RFabOutlined extends StatefulWidget {
|
|||||||
onPressed: onPressed,
|
onPressed: onPressed,
|
||||||
backgroundColor: AppColor.greenNormal,
|
backgroundColor: AppColor.greenNormal,
|
||||||
borderColor: AppColor.greenNormal,
|
borderColor: AppColor.greenNormal,
|
||||||
icon: vecWidget2(
|
icon: Assets.vec.addSvg.svg(
|
||||||
Assets.vecAddSvg,
|
colorFilter: ColorFilter.mode(
|
||||||
|
onPressed != null
|
||||||
color: AppColor.greenNormal,
|
? AppColor.greenNormal
|
||||||
|
: AppColor.greenNormal.disabledColor,
|
||||||
|
BlendMode.srcIn,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -81,12 +83,14 @@ class RFabOutlined extends StatefulWidget {
|
|||||||
key: key,
|
key: key,
|
||||||
onPressed: onPressed,
|
onPressed: onPressed,
|
||||||
backgroundColor: AppColor.greenNormal,
|
backgroundColor: AppColor.greenNormal,
|
||||||
icon: vecWidget(
|
|
||||||
Assets.vecAddSvg,
|
icon: Assets.vec.addSvg.svg(
|
||||||
color:
|
colorFilter: ColorFilter.mode(
|
||||||
onPressed != null
|
onPressed != null
|
||||||
? AppColor.greenNormal
|
? AppColor.greenNormal
|
||||||
: AppColor.greenNormal.disabledColor,
|
: AppColor.greenNormal.disabledColor,
|
||||||
|
BlendMode.srcIn,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -96,12 +100,13 @@ class RFabOutlined extends StatefulWidget {
|
|||||||
onPressed: onPressed,
|
onPressed: onPressed,
|
||||||
backgroundColor: AppColor.greenNormal,
|
backgroundColor: AppColor.greenNormal,
|
||||||
borderColor: AppColor.greenNormal,
|
borderColor: AppColor.greenNormal,
|
||||||
icon: vecWidget(
|
icon: Assets.vec.addSvg.svg(
|
||||||
Assets.vecAddSvg,
|
colorFilter: ColorFilter.mode(
|
||||||
color:
|
onPressed != null
|
||||||
onPressed != null
|
? AppColor.greenNormal
|
||||||
? AppColor.greenNormal
|
: AppColor.greenNormal.disabledColor,
|
||||||
: AppColor.greenNormal.disabledColor,
|
BlendMode.srcIn,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -110,12 +115,13 @@ class RFabOutlined extends StatefulWidget {
|
|||||||
key: key,
|
key: key,
|
||||||
onPressed: onPressed,
|
onPressed: onPressed,
|
||||||
backgroundColor: AppColor.greenNormal,
|
backgroundColor: AppColor.greenNormal,
|
||||||
icon: vecWidget(
|
icon: Assets.vec.addSvg.svg(
|
||||||
Assets.vecAddSvg,
|
colorFilter: ColorFilter.mode(
|
||||||
color:
|
onPressed != null
|
||||||
onPressed != null
|
? AppColor.greenNormal
|
||||||
? AppColor.greenNormal
|
: AppColor.greenNormal.disabledColor,
|
||||||
: AppColor.greenNormal.disabledColor,
|
BlendMode.srcIn,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -128,12 +134,13 @@ class RFabOutlined extends StatefulWidget {
|
|||||||
onPressed: onPressed,
|
onPressed: onPressed,
|
||||||
backgroundColor: AppColor.blueNormal,
|
backgroundColor: AppColor.blueNormal,
|
||||||
borderColor: AppColor.blueNormal,
|
borderColor: AppColor.blueNormal,
|
||||||
icon: vecWidget(
|
icon: Assets.vec.editSvg.svg(
|
||||||
Assets.vecEditSvg,
|
colorFilter: ColorFilter.mode(
|
||||||
color:
|
onPressed != null
|
||||||
onPressed != null
|
? AppColor.blueNormal
|
||||||
? AppColor.blueNormal
|
: AppColor.blueNormal.disabledColor,
|
||||||
: AppColor.blueNormal.disabledColor,
|
BlendMode.srcIn,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -142,12 +149,13 @@ class RFabOutlined extends StatefulWidget {
|
|||||||
key: key,
|
key: key,
|
||||||
onPressed: onPressed,
|
onPressed: onPressed,
|
||||||
backgroundColor: AppColor.blueNormal,
|
backgroundColor: AppColor.blueNormal,
|
||||||
icon: vecWidget(
|
icon: Assets.vec.editSvg.svg(
|
||||||
Assets.vecEditSvg,
|
colorFilter: ColorFilter.mode(
|
||||||
color:
|
onPressed != null
|
||||||
onPressed != null
|
? AppColor.blueNormal
|
||||||
? AppColor.blueNormal
|
: AppColor.blueNormal.disabledColor,
|
||||||
: AppColor.blueNormal.disabledColor,
|
BlendMode.srcIn,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -157,12 +165,13 @@ class RFabOutlined extends StatefulWidget {
|
|||||||
onPressed: onPressed,
|
onPressed: onPressed,
|
||||||
backgroundColor: AppColor.blueNormal,
|
backgroundColor: AppColor.blueNormal,
|
||||||
borderColor: AppColor.blueNormal,
|
borderColor: AppColor.blueNormal,
|
||||||
icon: vecWidget(
|
icon: Assets.vec.editSvg.svg(
|
||||||
Assets.vecEditSvg,
|
colorFilter: ColorFilter.mode(
|
||||||
color:
|
onPressed != null
|
||||||
onPressed != null
|
? AppColor.blueNormal
|
||||||
? AppColor.blueNormal
|
: AppColor.blueNormal.disabledColor,
|
||||||
: AppColor.blueNormal.disabledColor,
|
BlendMode.srcIn,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -171,12 +180,13 @@ class RFabOutlined extends StatefulWidget {
|
|||||||
key: key,
|
key: key,
|
||||||
onPressed: onPressed,
|
onPressed: onPressed,
|
||||||
backgroundColor: AppColor.blueNormal,
|
backgroundColor: AppColor.blueNormal,
|
||||||
icon: vecWidget(
|
icon: Assets.vec.editSvg.svg(
|
||||||
Assets.vecEditSvg,
|
colorFilter: ColorFilter.mode(
|
||||||
color:
|
onPressed != null
|
||||||
onPressed != null
|
? AppColor.blueNormal
|
||||||
? AppColor.blueNormal
|
: AppColor.blueNormal.disabledColor,
|
||||||
: AppColor.blueNormal.disabledColor,
|
BlendMode.srcIn,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -189,12 +199,13 @@ class RFabOutlined extends StatefulWidget {
|
|||||||
onPressed: onPressed,
|
onPressed: onPressed,
|
||||||
backgroundColor: AppColor.redNormal,
|
backgroundColor: AppColor.redNormal,
|
||||||
borderColor: AppColor.redNormal,
|
borderColor: AppColor.redNormal,
|
||||||
icon: vecWidget(
|
icon: Assets.vec.trashSvg.svg(
|
||||||
Assets.vecTrashSvg,
|
colorFilter: ColorFilter.mode(
|
||||||
color:
|
onPressed != null
|
||||||
onPressed != null
|
? AppColor.redNormal
|
||||||
? AppColor.redNormal
|
: AppColor.redNormal.disabledColor,
|
||||||
: AppColor.redNormal.disabledColor,
|
BlendMode.srcIn,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -203,12 +214,13 @@ class RFabOutlined extends StatefulWidget {
|
|||||||
key: key,
|
key: key,
|
||||||
onPressed: onPressed,
|
onPressed: onPressed,
|
||||||
backgroundColor: AppColor.redNormal,
|
backgroundColor: AppColor.redNormal,
|
||||||
icon: vecWidget(
|
icon: Assets.vec.trashSvg.svg(
|
||||||
Assets.vecTrashSvg,
|
colorFilter: ColorFilter.mode(
|
||||||
color:
|
onPressed != null
|
||||||
onPressed != null
|
? AppColor.redNormal
|
||||||
? AppColor.redNormal
|
: AppColor.redNormal.disabledColor,
|
||||||
: AppColor.redNormal.disabledColor,
|
BlendMode.srcIn,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -218,12 +230,13 @@ class RFabOutlined extends StatefulWidget {
|
|||||||
onPressed: onPressed,
|
onPressed: onPressed,
|
||||||
backgroundColor: AppColor.redNormal,
|
backgroundColor: AppColor.redNormal,
|
||||||
borderColor: AppColor.redNormal,
|
borderColor: AppColor.redNormal,
|
||||||
icon: vecWidget(
|
icon: Assets.vec.trashSvg.svg(
|
||||||
Assets.vecTrashSvg,
|
colorFilter: ColorFilter.mode(
|
||||||
color:
|
onPressed != null
|
||||||
onPressed != null
|
? AppColor.redNormal
|
||||||
? AppColor.redNormal
|
: AppColor.redNormal.disabledColor,
|
||||||
: AppColor.redNormal.disabledColor,
|
BlendMode.srcIn,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -232,12 +245,13 @@ class RFabOutlined extends StatefulWidget {
|
|||||||
key: key,
|
key: key,
|
||||||
onPressed: onPressed,
|
onPressed: onPressed,
|
||||||
backgroundColor: AppColor.redNormal,
|
backgroundColor: AppColor.redNormal,
|
||||||
icon: vecWidget(
|
icon: Assets.vec.trashSvg.svg(
|
||||||
Assets.vecTrashSvg,
|
colorFilter: ColorFilter.mode(
|
||||||
color:
|
onPressed != null
|
||||||
onPressed != null
|
? AppColor.redNormal
|
||||||
? AppColor.redNormal
|
: AppColor.redNormal.disabledColor,
|
||||||
: AppColor.redNormal.disabledColor,
|
BlendMode.srcIn,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -250,12 +264,13 @@ class RFabOutlined extends StatefulWidget {
|
|||||||
onPressed: onPressed,
|
onPressed: onPressed,
|
||||||
backgroundColor: AppColor.blueNormal,
|
backgroundColor: AppColor.blueNormal,
|
||||||
borderColor: AppColor.blueNormal,
|
borderColor: AppColor.blueNormal,
|
||||||
icon: vecWidget(
|
icon: Assets.vec.scanSvg.svg(
|
||||||
Assets.vecScanSvg,
|
colorFilter: ColorFilter.mode(
|
||||||
color:
|
onPressed != null
|
||||||
onPressed != null
|
? AppColor.blueNormal
|
||||||
? AppColor.blueNormal
|
: AppColor.blueNormal.disabledColor,
|
||||||
: AppColor.blueNormal.disabledColor,
|
BlendMode.srcIn,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -264,12 +279,13 @@ class RFabOutlined extends StatefulWidget {
|
|||||||
key: key,
|
key: key,
|
||||||
onPressed: onPressed,
|
onPressed: onPressed,
|
||||||
backgroundColor: AppColor.blueNormal,
|
backgroundColor: AppColor.blueNormal,
|
||||||
icon: vecWidget(
|
icon: Assets.vec.scanSvg.svg(
|
||||||
Assets.vecScanSvg,
|
colorFilter: ColorFilter.mode(
|
||||||
color:
|
onPressed != null
|
||||||
onPressed != null
|
? AppColor.blueNormal
|
||||||
? AppColor.blueNormal
|
: AppColor.blueNormal.disabledColor,
|
||||||
: AppColor.blueNormal.disabledColor,
|
BlendMode.srcIn,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -279,12 +295,13 @@ class RFabOutlined extends StatefulWidget {
|
|||||||
onPressed: onPressed,
|
onPressed: onPressed,
|
||||||
backgroundColor: AppColor.blueNormal,
|
backgroundColor: AppColor.blueNormal,
|
||||||
borderColor: AppColor.blueNormal,
|
borderColor: AppColor.blueNormal,
|
||||||
icon: vecWidget(
|
icon: Assets.vec.scanSvg.svg(
|
||||||
Assets.vecScanSvg,
|
colorFilter: ColorFilter.mode(
|
||||||
color:
|
onPressed != null
|
||||||
onPressed != null
|
? AppColor.blueNormal
|
||||||
? AppColor.blueNormal
|
: AppColor.blueNormal.disabledColor,
|
||||||
: AppColor.blueNormal.disabledColor,
|
BlendMode.srcIn,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -293,12 +310,13 @@ class RFabOutlined extends StatefulWidget {
|
|||||||
key: key,
|
key: key,
|
||||||
onPressed: onPressed,
|
onPressed: onPressed,
|
||||||
backgroundColor: AppColor.blueNormal,
|
backgroundColor: AppColor.blueNormal,
|
||||||
icon: vecWidget(
|
icon: Assets.vec.scanSvg.svg(
|
||||||
Assets.vecScanSvg,
|
colorFilter: ColorFilter.mode(
|
||||||
color:
|
onPressed != null
|
||||||
onPressed != null
|
? AppColor.blueNormal
|
||||||
? AppColor.blueNormal
|
: AppColor.blueNormal.disabledColor,
|
||||||
: AppColor.blueNormal.disabledColor,
|
BlendMode.srcIn,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -311,12 +329,13 @@ class RFabOutlined extends StatefulWidget {
|
|||||||
onPressed: onPressed,
|
onPressed: onPressed,
|
||||||
backgroundColor: AppColor.blueNormal,
|
backgroundColor: AppColor.blueNormal,
|
||||||
borderColor: AppColor.blueNormal,
|
borderColor: AppColor.blueNormal,
|
||||||
icon: vecWidget(
|
icon: Assets.vec.filterSvg.svg(
|
||||||
Assets.vecFilterSvg,
|
colorFilter: ColorFilter.mode(
|
||||||
color:
|
onPressed != null
|
||||||
onPressed != null
|
? AppColor.blueNormal
|
||||||
? AppColor.blueNormal
|
: AppColor.blueNormal.disabledColor,
|
||||||
: AppColor.blueNormal.disabledColor,
|
BlendMode.srcIn,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -325,12 +344,13 @@ class RFabOutlined extends StatefulWidget {
|
|||||||
key: key,
|
key: key,
|
||||||
onPressed: onPressed,
|
onPressed: onPressed,
|
||||||
backgroundColor: AppColor.blueNormal,
|
backgroundColor: AppColor.blueNormal,
|
||||||
icon: vecWidget(
|
icon: Assets.vec.filterSvg.svg(
|
||||||
Assets.vecFilterSvg,
|
colorFilter: ColorFilter.mode(
|
||||||
color:
|
onPressed != null
|
||||||
onPressed != null
|
? AppColor.blueNormal
|
||||||
? AppColor.blueNormal
|
: AppColor.blueNormal.disabledColor,
|
||||||
: AppColor.blueNormal.disabledColor,
|
BlendMode.srcIn,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -340,12 +360,13 @@ class RFabOutlined extends StatefulWidget {
|
|||||||
onPressed: onPressed,
|
onPressed: onPressed,
|
||||||
backgroundColor: AppColor.blueNormal,
|
backgroundColor: AppColor.blueNormal,
|
||||||
borderColor: AppColor.blueNormal,
|
borderColor: AppColor.blueNormal,
|
||||||
icon: vecWidget(
|
icon: Assets.vec.filterSvg.svg(
|
||||||
Assets.vecFilterSvg,
|
colorFilter: ColorFilter.mode(
|
||||||
color:
|
onPressed != null
|
||||||
onPressed != null
|
? AppColor.blueNormal
|
||||||
? AppColor.blueNormal
|
: AppColor.blueNormal.disabledColor,
|
||||||
: AppColor.blueNormal.disabledColor,
|
BlendMode.srcIn,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -354,12 +375,13 @@ class RFabOutlined extends StatefulWidget {
|
|||||||
key: key,
|
key: key,
|
||||||
onPressed: onPressed,
|
onPressed: onPressed,
|
||||||
backgroundColor: AppColor.blueNormal,
|
backgroundColor: AppColor.blueNormal,
|
||||||
icon: vecWidget(
|
icon: Assets.vec.filterSvg.svg(
|
||||||
Assets.vecFilterSvg,
|
colorFilter: ColorFilter.mode(
|
||||||
color:
|
onPressed != null
|
||||||
onPressed != null
|
? AppColor.blueNormal
|
||||||
? AppColor.blueNormal
|
: AppColor.blueNormal.disabledColor,
|
||||||
: AppColor.blueNormal.disabledColor,
|
BlendMode.srcIn,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -372,12 +394,13 @@ class RFabOutlined extends StatefulWidget {
|
|||||||
onPressed: onPressed,
|
onPressed: onPressed,
|
||||||
backgroundColor: AppColor.blueNormal,
|
backgroundColor: AppColor.blueNormal,
|
||||||
borderColor: AppColor.blueNormal,
|
borderColor: AppColor.blueNormal,
|
||||||
icon: vecWidget(
|
icon: Assets.vec.downloadSvg.svg(
|
||||||
Assets.vecDownloadSvg,
|
colorFilter: ColorFilter.mode(
|
||||||
color:
|
onPressed != null
|
||||||
onPressed != null
|
? AppColor.greenNormal
|
||||||
? AppColor.greenDark
|
: AppColor.greenNormal.disabledColor,
|
||||||
: AppColor.greenDark.disabledColor,
|
BlendMode.srcIn,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -386,12 +409,13 @@ class RFabOutlined extends StatefulWidget {
|
|||||||
key: key,
|
key: key,
|
||||||
onPressed: onPressed,
|
onPressed: onPressed,
|
||||||
backgroundColor: AppColor.blueNormal,
|
backgroundColor: AppColor.blueNormal,
|
||||||
icon: vecWidget(
|
icon: Assets.vec.downloadSvg.svg(
|
||||||
Assets.vecDownloadSvg,
|
colorFilter: ColorFilter.mode(
|
||||||
color:
|
onPressed != null
|
||||||
onPressed != null
|
? AppColor.greenNormal
|
||||||
? AppColor.greenDark
|
: AppColor.greenNormal.disabledColor,
|
||||||
: AppColor.greenDark.disabledColor,
|
BlendMode.srcIn,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -401,12 +425,13 @@ class RFabOutlined extends StatefulWidget {
|
|||||||
onPressed: onPressed,
|
onPressed: onPressed,
|
||||||
backgroundColor: AppColor.blueNormal,
|
backgroundColor: AppColor.blueNormal,
|
||||||
borderColor: AppColor.blueNormal,
|
borderColor: AppColor.blueNormal,
|
||||||
icon: vecWidget(
|
icon: Assets.vec.downloadSvg.svg(
|
||||||
Assets.vecDownloadSvg,
|
colorFilter: ColorFilter.mode(
|
||||||
color:
|
onPressed != null
|
||||||
onPressed != null
|
? AppColor.greenNormal
|
||||||
? AppColor.greenDark
|
: AppColor.greenNormal.disabledColor,
|
||||||
: AppColor.greenDark.disabledColor,
|
BlendMode.srcIn,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -415,12 +440,13 @@ class RFabOutlined extends StatefulWidget {
|
|||||||
key: key,
|
key: key,
|
||||||
onPressed: onPressed,
|
onPressed: onPressed,
|
||||||
backgroundColor: AppColor.blueNormal,
|
backgroundColor: AppColor.blueNormal,
|
||||||
icon: vecWidget(
|
icon: Assets.vec.downloadSvg.svg(
|
||||||
Assets.vecDownloadSvg,
|
colorFilter: ColorFilter.mode(
|
||||||
color:
|
onPressed != null
|
||||||
onPressed != null
|
? AppColor.greenNormal
|
||||||
? AppColor.greenDark
|
: AppColor.greenNormal.disabledColor,
|
||||||
: AppColor.greenDark.disabledColor,
|
BlendMode.srcIn,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -433,12 +459,13 @@ class RFabOutlined extends StatefulWidget {
|
|||||||
onPressed: onPressed,
|
onPressed: onPressed,
|
||||||
backgroundColor: AppColor.greenDark,
|
backgroundColor: AppColor.greenDark,
|
||||||
borderColor: AppColor.greenDark,
|
borderColor: AppColor.greenDark,
|
||||||
icon: vecWidget(
|
icon: Assets.vec.excelDownloadSvg.svg(
|
||||||
Assets.vecDownloadSvg,
|
colorFilter: ColorFilter.mode(
|
||||||
color:
|
onPressed != null
|
||||||
onPressed != null
|
? AppColor.greenNormal
|
||||||
? AppColor.greenDark
|
: AppColor.greenNormal.disabledColor,
|
||||||
: AppColor.greenDark.disabledColor,
|
BlendMode.srcIn,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -447,12 +474,13 @@ class RFabOutlined extends StatefulWidget {
|
|||||||
key: key,
|
key: key,
|
||||||
onPressed: onPressed,
|
onPressed: onPressed,
|
||||||
backgroundColor: AppColor.greenDark,
|
backgroundColor: AppColor.greenDark,
|
||||||
icon: vecWidget(
|
icon: Assets.vec.excelDownloadSvg.svg(
|
||||||
Assets.vecDownloadSvg,
|
colorFilter: ColorFilter.mode(
|
||||||
color:
|
onPressed != null
|
||||||
onPressed != null
|
? AppColor.greenNormal
|
||||||
? AppColor.greenDark
|
: AppColor.greenNormal.disabledColor,
|
||||||
: AppColor.greenDark.disabledColor,
|
BlendMode.srcIn,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -462,12 +490,13 @@ class RFabOutlined extends StatefulWidget {
|
|||||||
onPressed: onPressed,
|
onPressed: onPressed,
|
||||||
backgroundColor: AppColor.greenDark,
|
backgroundColor: AppColor.greenDark,
|
||||||
borderColor: AppColor.greenDark,
|
borderColor: AppColor.greenDark,
|
||||||
icon: vecWidget(
|
icon: Assets.vec.excelDownloadSvg.svg(
|
||||||
Assets.vecDownloadSvg,
|
colorFilter: ColorFilter.mode(
|
||||||
color:
|
onPressed != null
|
||||||
onPressed != null
|
? AppColor.greenNormal
|
||||||
? AppColor.greenDark
|
: AppColor.greenNormal.disabledColor,
|
||||||
: AppColor.greenDark.disabledColor,
|
BlendMode.srcIn,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -476,12 +505,13 @@ class RFabOutlined extends StatefulWidget {
|
|||||||
key: key,
|
key: key,
|
||||||
onPressed: onPressed,
|
onPressed: onPressed,
|
||||||
backgroundColor: AppColor.greenDark,
|
backgroundColor: AppColor.greenDark,
|
||||||
icon: vecWidget(
|
icon: Assets.vec.excelDownloadSvg.svg(
|
||||||
Assets.vecDownloadSvg,
|
colorFilter: ColorFilter.mode(
|
||||||
color:
|
onPressed != null
|
||||||
onPressed != null
|
? AppColor.greenNormal
|
||||||
? AppColor.greenDark
|
: AppColor.greenNormal.disabledColor,
|
||||||
: AppColor.greenDark.disabledColor,
|
BlendMode.srcIn,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -494,12 +524,13 @@ class RFabOutlined extends StatefulWidget {
|
|||||||
onPressed: onPressed,
|
onPressed: onPressed,
|
||||||
backgroundColor: AppColor.blueNormal,
|
backgroundColor: AppColor.blueNormal,
|
||||||
borderColor: AppColor.blueNormal,
|
borderColor: AppColor.blueNormal,
|
||||||
icon: vecWidget(
|
icon: Assets.vec.arrowLeftSvg.svg(
|
||||||
Assets.vecArrowLeftSvg,
|
colorFilter: ColorFilter.mode(
|
||||||
color:
|
onPressed != null
|
||||||
onPressed != null
|
? AppColor.blueNormal
|
||||||
? AppColor.blueNormal
|
: AppColor.blueNormal.disabledColor,
|
||||||
: AppColor.blueNormal.disabledColor,
|
BlendMode.srcIn,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -508,12 +539,13 @@ class RFabOutlined extends StatefulWidget {
|
|||||||
key: key,
|
key: key,
|
||||||
onPressed: onPressed,
|
onPressed: onPressed,
|
||||||
backgroundColor: AppColor.blueNormal,
|
backgroundColor: AppColor.blueNormal,
|
||||||
icon: vecWidget(
|
icon: Assets.vec.arrowLeftSvg.svg(
|
||||||
Assets.vecArrowLeftSvg,
|
colorFilter: ColorFilter.mode(
|
||||||
color:
|
onPressed != null
|
||||||
onPressed != null
|
? AppColor.blueNormal
|
||||||
? AppColor.blueNormal
|
: AppColor.blueNormal.disabledColor,
|
||||||
: AppColor.blueNormal.disabledColor,
|
BlendMode.srcIn,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -523,12 +555,13 @@ class RFabOutlined extends StatefulWidget {
|
|||||||
onPressed: onPressed,
|
onPressed: onPressed,
|
||||||
backgroundColor: AppColor.blueNormal,
|
backgroundColor: AppColor.blueNormal,
|
||||||
borderColor: AppColor.blueNormal,
|
borderColor: AppColor.blueNormal,
|
||||||
icon: vecWidget(
|
icon: Assets.vec.arrowLeftSvg.svg(
|
||||||
Assets.vecArrowLeftSvg,
|
colorFilter: ColorFilter.mode(
|
||||||
color:
|
onPressed != null
|
||||||
onPressed != null
|
? AppColor.blueNormal
|
||||||
? AppColor.blueNormal
|
: AppColor.blueNormal.disabledColor,
|
||||||
: AppColor.blueNormal.disabledColor,
|
BlendMode.srcIn,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -537,12 +570,13 @@ class RFabOutlined extends StatefulWidget {
|
|||||||
key: key,
|
key: key,
|
||||||
onPressed: onPressed,
|
onPressed: onPressed,
|
||||||
backgroundColor: AppColor.blueNormal,
|
backgroundColor: AppColor.blueNormal,
|
||||||
icon: vecWidget(
|
icon: Assets.vec.arrowLeftSvg.svg(
|
||||||
Assets.vecArrowLeftSvg,
|
colorFilter: ColorFilter.mode(
|
||||||
color:
|
onPressed != null
|
||||||
onPressed != null
|
? AppColor.blueNormal
|
||||||
? AppColor.blueNormal
|
: AppColor.blueNormal.disabledColor,
|
||||||
: AppColor.blueNormal.disabledColor,
|
BlendMode.srcIn,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -550,11 +584,12 @@ class RFabOutlined extends StatefulWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class _RFabOutlinedState extends State<RFabOutlined> {
|
class _RFabOutlinedState extends State<RFabOutlined> {
|
||||||
bool isOnPressed =false;
|
bool isOnPressed = false;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return OutlinedButton(
|
return OutlinedButton(
|
||||||
onPressed:widget.onPressed ,
|
onPressed: widget.onPressed,
|
||||||
style: ButtonStyle(
|
style: ButtonStyle(
|
||||||
side: WidgetStateProperty.resolveWith<BorderSide?>((states) {
|
side: WidgetStateProperty.resolveWith<BorderSide?>((states) {
|
||||||
if (states.contains(WidgetState.disabled)) {
|
if (states.contains(WidgetState.disabled)) {
|
||||||
@@ -598,8 +633,7 @@ class _RFabOutlinedState extends State<RFabOutlined> {
|
|||||||
),
|
),
|
||||||
padding: WidgetStatePropertyAll(EdgeInsets.zero),
|
padding: WidgetStatePropertyAll(EdgeInsets.zero),
|
||||||
),
|
),
|
||||||
child: widget.icon
|
child: widget.icon,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,46 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:rasadyar_core/core.dart';
|
||||||
|
|
||||||
|
class CardIcon extends StatelessWidget {
|
||||||
|
const CardIcon({
|
||||||
|
super.key,
|
||||||
|
required this.title,
|
||||||
|
required this.icon,
|
||||||
|
this.onTap,
|
||||||
|
});
|
||||||
|
|
||||||
|
final String title;
|
||||||
|
final String icon;
|
||||||
|
final VoidCallback? onTap;
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return InkWell(
|
||||||
|
onTap: onTap,
|
||||||
|
child: Card(
|
||||||
|
shape: RoundedRectangleBorder(
|
||||||
|
borderRadius: BorderRadius.circular(8),
|
||||||
|
side: const BorderSide(color: AppColor.blueNormal, width: 1),
|
||||||
|
),
|
||||||
|
child: Container(
|
||||||
|
padding: const EdgeInsets.all(16),
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
borderRadius: BorderRadius.circular(8),
|
||||||
|
color: Colors.white,
|
||||||
|
),
|
||||||
|
child: Column(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
SvgGenImage(icon).svg(width: 50, height: 50),
|
||||||
|
const SizedBox(height: 8),
|
||||||
|
Text(
|
||||||
|
title,
|
||||||
|
style: AppFonts.yekan16.copyWith(color: AppColor.blueNormal),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -22,7 +22,7 @@ SvgPicture vecWidget(
|
|||||||
}
|
}
|
||||||
|
|
||||||
Widget vecWidgetWithOnTap({
|
Widget vecWidgetWithOnTap({
|
||||||
required String assets,
|
required Widget child,
|
||||||
required VoidCallback onTap,
|
required VoidCallback onTap,
|
||||||
double? width,
|
double? width,
|
||||||
double? height,
|
double? height,
|
||||||
@@ -31,14 +31,7 @@ Widget vecWidgetWithOnTap({
|
|||||||
}) {
|
}) {
|
||||||
return InkWell(
|
return InkWell(
|
||||||
onTap: onTap,
|
onTap: onTap,
|
||||||
child: SvgPicture(
|
child: child
|
||||||
AssetBytesLoader(assets),
|
|
||||||
width: width,
|
|
||||||
height: height,
|
|
||||||
fit: fit ?? BoxFit.contain,
|
|
||||||
colorFilter:
|
|
||||||
color != null ? ColorFilter.mode(color, BlendMode.srcIn) : null,
|
|
||||||
),
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -14,3 +14,4 @@ export 'pagination/show_more.dart';
|
|||||||
export 'tabs/new_tab.dart';
|
export 'tabs/new_tab.dart';
|
||||||
export 'tabs/tab.dart';
|
export 'tabs/tab.dart';
|
||||||
export 'vec_widget.dart';
|
export 'vec_widget.dart';
|
||||||
|
export 'card/card_with_icon_with_border.dart';
|
||||||
|
|||||||
@@ -17,6 +17,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "7.4.4"
|
version: "7.4.4"
|
||||||
|
archive:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: archive
|
||||||
|
sha256: "2fde1607386ab523f7a36bb3e7edb43bd58e6edaf2ffb29d8a6d578b297fdbbd"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "4.0.7"
|
||||||
args:
|
args:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -153,6 +161,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.19.1"
|
version: "1.19.1"
|
||||||
|
color:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: color
|
||||||
|
sha256: ddcdf1b3badd7008233f5acffaf20ca9f5dc2cd0172b75f68f24526a5f5725cb
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "3.0.0"
|
||||||
convert:
|
convert:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -262,6 +278,22 @@ packages:
|
|||||||
description: flutter
|
description: flutter
|
||||||
source: sdk
|
source: sdk
|
||||||
version: "0.0.0"
|
version: "0.0.0"
|
||||||
|
flutter_gen_core:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: flutter_gen_core
|
||||||
|
sha256: "3eaa2d3d8be58267ac4cd5e215ac965dd23cae0410dc073de2e82e227be32bfc"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "5.10.0"
|
||||||
|
flutter_gen_runner:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: flutter_gen_runner
|
||||||
|
sha256: e74b4ead01df3e8f02e73a26ca856759dbbe8cb3fd60941ba9f4005cd0cd19c9
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "5.10.0"
|
||||||
flutter_lints:
|
flutter_lints:
|
||||||
dependency: "direct dev"
|
dependency: "direct dev"
|
||||||
description:
|
description:
|
||||||
@@ -493,6 +525,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.3.2"
|
version: "2.3.2"
|
||||||
|
hashcodes:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: hashcodes
|
||||||
|
sha256: "80f9410a5b3c8e110c4b7604546034749259f5d6dcca63e0d3c17c9258f1a651"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.0.0"
|
||||||
hive_ce:
|
hive_ce:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@@ -541,6 +581,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.1.2"
|
version: "4.1.2"
|
||||||
|
image_size_getter:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: image_size_getter
|
||||||
|
sha256: "9a299e3af2ebbcfd1baf21456c3c884037ff524316c97d8e56035ea8fdf35653"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.4.0"
|
||||||
intl:
|
intl:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@@ -885,6 +933,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.5.1"
|
version: "1.5.1"
|
||||||
|
posix:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: posix
|
||||||
|
sha256: f0d7856b6ca1887cfa6d1d394056a296ae33489db914e365e2044fdada449e62
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "6.0.2"
|
||||||
pretty_dio_logger:
|
pretty_dio_logger:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
|||||||
@@ -36,6 +36,9 @@ dependencies:
|
|||||||
flutter_svg: ^2.0.17
|
flutter_svg: ^2.0.17
|
||||||
font_awesome_flutter: ^10.8.0
|
font_awesome_flutter: ^10.8.0
|
||||||
|
|
||||||
|
#Generator
|
||||||
|
flutter_gen_runner: ^5.10.0
|
||||||
|
|
||||||
##state manger
|
##state manger
|
||||||
get: ^4.7.2
|
get: ^4.7.2
|
||||||
|
|
||||||
@@ -76,6 +79,7 @@ dev_dependencies:
|
|||||||
freezed: ^3.0.3
|
freezed: ^3.0.3
|
||||||
json_serializable: ^6.9.4
|
json_serializable: ^6.9.4
|
||||||
|
|
||||||
|
|
||||||
##test
|
##test
|
||||||
mocktail: ^1.0.4
|
mocktail: ^1.0.4
|
||||||
get_test: ^4.0.1
|
get_test: ^4.0.1
|
||||||
@@ -85,3 +89,9 @@ dev_dependencies:
|
|||||||
|
|
||||||
flutter:
|
flutter:
|
||||||
uses-material-design: true
|
uses-material-design: true
|
||||||
|
assets:
|
||||||
|
- assets/
|
||||||
|
- assets/vec/
|
||||||
|
- assets/icons/
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ import 'dart:io';
|
|||||||
import 'package:flutter/cupertino.dart';
|
import 'package:flutter/cupertino.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:rasadyar_core/core.dart';
|
import 'package:rasadyar_core/core.dart';
|
||||||
import 'package:rasadyar_core/presentation/widget/buttons/elevated.dart';
|
|
||||||
|
|
||||||
import 'logic.dart';
|
import 'logic.dart';
|
||||||
|
|
||||||
@@ -113,7 +112,7 @@ class ActionPage extends GetView<ActionLogic> {
|
|||||||
children: [
|
children: [
|
||||||
Container(
|
Container(
|
||||||
height: 32,
|
height: 32,
|
||||||
margin: EdgeInsets.symmetric(horizontal: 22,vertical: 10),
|
margin: EdgeInsets.symmetric(horizontal: 22, vertical: 10),
|
||||||
child: Row(
|
child: Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.start,
|
mainAxisAlignment: MainAxisAlignment.start,
|
||||||
crossAxisAlignment: CrossAxisAlignment.center,
|
crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
@@ -161,13 +160,13 @@ class ActionPage extends GetView<ActionLogic> {
|
|||||||
mainAxisAlignment: MainAxisAlignment.end,
|
mainAxisAlignment: MainAxisAlignment.end,
|
||||||
children: [
|
children: [
|
||||||
vecWidgetWithOnTap(
|
vecWidgetWithOnTap(
|
||||||
assets: Assets.vecPdfDownloadSvg,
|
child: Assets.vec.pdfDownloadSvg.svg(),
|
||||||
onTap: () {},
|
onTap: () {},
|
||||||
width: 64,
|
width: 64,
|
||||||
height: 64,
|
height: 64,
|
||||||
),
|
),
|
||||||
vecWidgetWithOnTap(
|
vecWidgetWithOnTap(
|
||||||
assets: Assets.vecExcelDownloadSvg,
|
child: Assets.vec.excelDownloadSvg.svg(),
|
||||||
onTap: () {},
|
onTap: () {},
|
||||||
width: 64,
|
width: 64,
|
||||||
height: 64,
|
height: 64,
|
||||||
@@ -220,7 +219,7 @@ class ActionPage extends GetView<ActionLogic> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Widget headerWidget({
|
Widget headerWidget({
|
||||||
required String icon,
|
required Widget icon,
|
||||||
required String title,
|
required String title,
|
||||||
required VoidCallback onTap,
|
required VoidCallback onTap,
|
||||||
bool isSelected = false,
|
bool isSelected = false,
|
||||||
@@ -240,12 +239,7 @@ class ActionPage extends GetView<ActionLogic> {
|
|||||||
borderRadius: BorderRadius.circular(8),
|
borderRadius: BorderRadius.circular(8),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
child: vecWidget(
|
child: icon,
|
||||||
icon,
|
|
||||||
width: 40,
|
|
||||||
height: 40,
|
|
||||||
color: AppColor.blueNormal,
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
Text(
|
Text(
|
||||||
title,
|
title,
|
||||||
@@ -279,7 +273,10 @@ class ActionPage extends GetView<ActionLogic> {
|
|||||||
padding: EdgeInsets.all(16),
|
padding: EdgeInsets.all(16),
|
||||||
borderRadius: BorderRadius.circular(8),
|
borderRadius: BorderRadius.circular(8),
|
||||||
autoClose: true,
|
autoClose: true,
|
||||||
child: vecWidget(Assets.vecTrashSvg, width: 24, height: 24),
|
child: Assets.vec.trashSvg.svg(
|
||||||
|
width: 24,
|
||||||
|
height: 24,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
@@ -372,7 +369,10 @@ class ActionPage extends GetView<ActionLogic> {
|
|||||||
bottomRight: Radius.circular(8),
|
bottomRight: Radius.circular(8),
|
||||||
),
|
),
|
||||||
autoClose: true,
|
autoClose: true,
|
||||||
child: vecWidget(Assets.vecEditSvg, width: 24, height: 24),
|
child: Assets.vec.trashSvg.svg(
|
||||||
|
width: 24,
|
||||||
|
height: 24,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
CustomSlidableAction(
|
CustomSlidableAction(
|
||||||
onPressed: (context) {},
|
onPressed: (context) {},
|
||||||
@@ -384,7 +384,10 @@ class ActionPage extends GetView<ActionLogic> {
|
|||||||
bottomLeft: Radius.circular(8),
|
bottomLeft: Radius.circular(8),
|
||||||
),
|
),
|
||||||
autoClose: true,
|
autoClose: true,
|
||||||
child: vecWidget(Assets.vecTrashSvg, width: 24, height: 24),
|
child: Assets.vec.trashSvg.svg(
|
||||||
|
width: 24,
|
||||||
|
height: 24,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
@@ -492,7 +495,7 @@ class ActionPage extends GetView<ActionLogic> {
|
|||||||
spacing: 12,
|
spacing: 12,
|
||||||
children: [
|
children: [
|
||||||
vecWidgetWithOnTap(
|
vecWidgetWithOnTap(
|
||||||
assets: Assets.vecEditSvg,
|
child: Assets.vec.editSvg.svg(),
|
||||||
onTap: () {},
|
onTap: () {},
|
||||||
width: 24,
|
width: 24,
|
||||||
height: 24,
|
height: 24,
|
||||||
@@ -506,7 +509,7 @@ class ActionPage extends GetView<ActionLogic> {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
vecWidgetWithOnTap(
|
vecWidgetWithOnTap(
|
||||||
assets: Assets.vecTrashSvg,
|
child: Assets.vec.trashSvg.svg(),
|
||||||
width: 24,
|
width: 24,
|
||||||
height: 24,
|
height: 24,
|
||||||
color: AppColor.redNormal,
|
color: AppColor.redNormal,
|
||||||
@@ -649,7 +652,7 @@ class ActionPage extends GetView<ActionLogic> {
|
|||||||
children: [
|
children: [
|
||||||
Row(),
|
Row(),
|
||||||
Padding(
|
Padding(
|
||||||
padding: const EdgeInsets.symmetric(horizontal: 22,vertical: 10),
|
padding: const EdgeInsets.symmetric(horizontal: 22, vertical: 10),
|
||||||
child: Text(
|
child: Text(
|
||||||
title,
|
title,
|
||||||
textAlign: TextAlign.center,
|
textAlign: TextAlign.center,
|
||||||
|
|||||||
@@ -14,11 +14,13 @@ class AddMobileInspectorPage extends GetView<AddMobileInspectorLogic> {
|
|||||||
backgroundColor: AppColor.bgLight,
|
backgroundColor: AppColor.bgLight,
|
||||||
appBar: RAppBar(
|
appBar: RAppBar(
|
||||||
title: 'افزودن بازرس همراه',
|
title: 'افزودن بازرس همراه',
|
||||||
leading: vecWidget(
|
leading: Assets.vec.messageAddSvg.svg(
|
||||||
Assets.vecMessageAddSvg,
|
|
||||||
color: Colors.white,
|
|
||||||
width: 16,
|
width: 16,
|
||||||
height: 16,
|
height: 16,
|
||||||
|
colorFilter: ColorFilter.mode(
|
||||||
|
Colors.white,
|
||||||
|
BlendMode.srcIn,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
additionalActions: [
|
additionalActions: [
|
||||||
RFab.smallAdd(onPressed: () => controller.countInspector.value++),
|
RFab.smallAdd(onPressed: () => controller.countInspector.value++),
|
||||||
|
|||||||
@@ -13,11 +13,13 @@ class AddSupervisionPage extends GetView<AddSupervisionLogic> {
|
|||||||
backgroundColor: AppColor.lightGreyLight,
|
backgroundColor: AppColor.lightGreyLight,
|
||||||
appBar: RAppBar(
|
appBar: RAppBar(
|
||||||
title: 'ایجاد بازرسی',
|
title: 'ایجاد بازرسی',
|
||||||
leading: vecWidget(
|
leading: Assets.vec.messageAddSvg.svg(
|
||||||
Assets.vecMessageAddSvg,
|
|
||||||
color: Colors.white,
|
|
||||||
width: 16,
|
width: 16,
|
||||||
height: 16,
|
height: 16,
|
||||||
|
colorFilter: ColorFilter.mode(
|
||||||
|
Colors.white,
|
||||||
|
BlendMode.srcIn,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
body: Column(
|
body: Column(
|
||||||
|
|||||||
@@ -12,11 +12,13 @@ class DisplayInformationPage extends GetView<DisplayInformationLogic> {
|
|||||||
backgroundColor: AppColor.bgLight,
|
backgroundColor: AppColor.bgLight,
|
||||||
appBar: RAppBar(
|
appBar: RAppBar(
|
||||||
title: 'نمایش اطلاعات',
|
title: 'نمایش اطلاعات',
|
||||||
leading: vecWidget(
|
leading: Assets.vec.messageAddSvg.svg(
|
||||||
Assets.vecMessageAddSvg,
|
|
||||||
color: AppColor.blueNormal,
|
|
||||||
width: 16,
|
width: 16,
|
||||||
height: 16,
|
height: 16,
|
||||||
|
colorFilter: ColorFilter.mode(
|
||||||
|
AppColor.blueNormal,
|
||||||
|
BlendMode.srcIn,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ class SupervisionFilterPage extends GetView<InspectorFilterLogic> {
|
|||||||
return RFab.small(
|
return RFab.small(
|
||||||
backgroundColor: AppColor.greenNormal,
|
backgroundColor: AppColor.greenNormal,
|
||||||
isLoading: data.value,
|
isLoading: data.value,
|
||||||
icon: vecWidget(Assets.vecGpsSvg),
|
icon: Assets.vec.gpsSvg.svg(),
|
||||||
onPressed: () async {
|
onPressed: () async {
|
||||||
controller.isLoading.value = true;
|
controller.isLoading.value = true;
|
||||||
await controller.determineCurrentPosition();
|
await controller.determineCurrentPosition();
|
||||||
@@ -91,7 +91,7 @@ class SupervisionFilterPage extends GetView<InspectorFilterLogic> {
|
|||||||
bottom: 30,
|
bottom: 30,
|
||||||
child: RFab.small(
|
child: RFab.small(
|
||||||
backgroundColor: AppColor.blueNormal,
|
backgroundColor: AppColor.blueNormal,
|
||||||
icon: vecWidget(Assets.vecFilterSvg, width: 24, height: 24),
|
icon: Assets.vec.filterSvg.svg(width: 24,height: 24),
|
||||||
onPressed: () => controller.filterBottomSheetController.toggle(),
|
onPressed: () => controller.filterBottomSheetController.toggle(),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
@@ -107,7 +107,10 @@ Marker markerWidget({required LatLng marker, required VoidCallback onTap}) {
|
|||||||
child: SizedBox(
|
child: SizedBox(
|
||||||
width: 36,
|
width: 36,
|
||||||
height: 36,
|
height: 36,
|
||||||
child: vecWidget(Assets.vecMapMarkerSvg,width: 30,height: 30,),
|
child:Assets.vec.mapMarkerSvg.svg(
|
||||||
|
width: 30,
|
||||||
|
height: 30,
|
||||||
|
)
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
@@ -318,7 +321,7 @@ Widget markerDetailsWidget() {
|
|||||||
),
|
),
|
||||||
Spacer(),
|
Spacer(),
|
||||||
vecWidgetWithOnTap(
|
vecWidgetWithOnTap(
|
||||||
assets: Assets.vecMapSvg,
|
child: Assets.vec.mapSvg.svg(),
|
||||||
onTap: () {
|
onTap: () {
|
||||||
Get.toNamed(InspectionRoutes.inspectionLocationDetails);
|
Get.toNamed(InspectionRoutes.inspectionLocationDetails);
|
||||||
},
|
},
|
||||||
@@ -327,7 +330,7 @@ Widget markerDetailsWidget() {
|
|||||||
color: AppColor.blueNormal,
|
color: AppColor.blueNormal,
|
||||||
),
|
),
|
||||||
vecWidgetWithOnTap(
|
vecWidgetWithOnTap(
|
||||||
assets: Assets.vecMessageAddSvg,
|
child: Assets.vec.messageAddSvg.svg(),
|
||||||
width: 24,
|
width: 24,
|
||||||
height: 24,
|
height: 24,
|
||||||
color: AppColor.greenNormal,
|
color: AppColor.greenNormal,
|
||||||
@@ -337,7 +340,7 @@ Widget markerDetailsWidget() {
|
|||||||
),
|
),
|
||||||
|
|
||||||
vecWidgetWithOnTap(
|
vecWidgetWithOnTap(
|
||||||
assets: Assets.vecSecurityTimeSvg,
|
child: Assets.vec.securityTimeSvg.svg(),
|
||||||
color: AppColor.warning,
|
color: AppColor.warning,
|
||||||
height: 24,
|
height: 24,
|
||||||
width: 24,
|
width: 24,
|
||||||
@@ -531,7 +534,7 @@ Widget selectedLocationWidget({
|
|||||||
bottomRight: Radius.circular(8),
|
bottomRight: Radius.circular(8),
|
||||||
topRight: Radius.circular(8),
|
topRight: Radius.circular(8),
|
||||||
),
|
),
|
||||||
child: vecWidget(Assets.vecMapSvg, width: 24, height: 24),
|
child: Assets.vec.mapSvg.svg( width: 24, height: 24),
|
||||||
),
|
),
|
||||||
CustomSlidableAction(
|
CustomSlidableAction(
|
||||||
onPressed: (context) {
|
onPressed: (context) {
|
||||||
@@ -539,7 +542,7 @@ Widget selectedLocationWidget({
|
|||||||
},
|
},
|
||||||
backgroundColor: AppColor.greenNormal,
|
backgroundColor: AppColor.greenNormal,
|
||||||
padding: EdgeInsets.all(16),
|
padding: EdgeInsets.all(16),
|
||||||
child: vecWidget(Assets.vecMessageAddSvg),
|
child: Assets.vec.messageAddSvg.svg(),
|
||||||
),
|
),
|
||||||
CustomSlidableAction(
|
CustomSlidableAction(
|
||||||
onPressed: (context) {},
|
onPressed: (context) {},
|
||||||
@@ -549,8 +552,8 @@ Widget selectedLocationWidget({
|
|||||||
bottomLeft: Radius.circular(8),
|
bottomLeft: Radius.circular(8),
|
||||||
topLeft: Radius.circular(8),
|
topLeft: Radius.circular(8),
|
||||||
),
|
),
|
||||||
child: vecWidget(Assets.vecSecurityTimeSvg),
|
child: Assets.vec.securityTimeSvg.svg()),
|
||||||
),
|
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
child: GestureDetector(
|
child: GestureDetector(
|
||||||
@@ -598,7 +601,7 @@ Widget selectedLocationWidget({
|
|||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
vecWidget(Assets.vecScanBarcodeSvg),
|
Assets.vec.scanBarcodeSvg.svg(),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -18,8 +18,7 @@ class ProfilePage extends GetView<ProfileLogic> {
|
|||||||
alignment: Alignment.center,
|
alignment: Alignment.center,
|
||||||
clipBehavior: Clip.none,
|
clipBehavior: Clip.none,
|
||||||
children: [
|
children: [
|
||||||
vecWidget(Assets.vecBgHeaderUserProfileSvg, fit: BoxFit.cover),
|
Assets.vec.bgHeaderUserProfileSvg.svg(),
|
||||||
|
|
||||||
Positioned(
|
Positioned(
|
||||||
bottom: -20,
|
bottom: -20,
|
||||||
left: 0,
|
left: 0,
|
||||||
@@ -105,7 +104,7 @@ class ProfilePage extends GetView<ProfileLogic> {
|
|||||||
onPressed: () {
|
onPressed: () {
|
||||||
data.value = 0;
|
data.value = 0;
|
||||||
},
|
},
|
||||||
icon: Assets.vecProfileUserSvg,
|
icon: Assets.vec.profileUserSvg.path,
|
||||||
selected: data.value == 0,
|
selected: data.value == 0,
|
||||||
),
|
),
|
||||||
cardActionWidget(
|
cardActionWidget(
|
||||||
@@ -113,7 +112,7 @@ class ProfilePage extends GetView<ProfileLogic> {
|
|||||||
onPressed: () {
|
onPressed: () {
|
||||||
data.value = 1;
|
data.value = 1;
|
||||||
},
|
},
|
||||||
icon: Assets.vecInformationSvg,
|
icon: Assets.vec.informationSvg.path,
|
||||||
selected: data.value == 1,
|
selected: data.value == 1,
|
||||||
),
|
),
|
||||||
cardActionWidget(
|
cardActionWidget(
|
||||||
@@ -121,7 +120,7 @@ class ProfilePage extends GetView<ProfileLogic> {
|
|||||||
onPressed: () {
|
onPressed: () {
|
||||||
data.value = 2;
|
data.value = 2;
|
||||||
},
|
},
|
||||||
icon: Assets.vecReceiptDiscountSvg,
|
icon: Assets.vec.receiptDiscountSvg.path,
|
||||||
selected: data.value == 2,
|
selected: data.value == 2,
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
@@ -129,9 +128,7 @@ class ProfilePage extends GetView<ProfileLogic> {
|
|||||||
);
|
);
|
||||||
}, controller.selectedInformationType),
|
}, controller.selectedInformationType),
|
||||||
|
|
||||||
SizedBox(
|
SizedBox(height: 100),
|
||||||
height: 100,
|
|
||||||
)
|
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@@ -159,34 +156,38 @@ class ProfilePage extends GetView<ProfileLogic> {
|
|||||||
itemList(
|
itemList(
|
||||||
title: 'نام و نام خانوادگی',
|
title: 'نام و نام خانوادگی',
|
||||||
content: 'آیدا گل محمدی',
|
content: 'آیدا گل محمدی',
|
||||||
icon: Assets.vecUserSvg,
|
icon: Assets.vec.userSvg.path,
|
||||||
),
|
),
|
||||||
itemList(
|
itemList(
|
||||||
title: 'موبایل',
|
title: 'موبایل',
|
||||||
content: '09302654896',
|
content: '09302654896',
|
||||||
icon: Assets.vecCallSvg,
|
icon: Assets.vec.callSvg.path,
|
||||||
),
|
),
|
||||||
itemList(
|
itemList(
|
||||||
title: 'کدملی',
|
title: 'کدملی',
|
||||||
content: 'نا مشخص',
|
content: 'نا مشخص',
|
||||||
icon: Assets.vecTagUserSvg,
|
icon: Assets.vec.tagUserSvg.path,
|
||||||
),
|
),
|
||||||
itemList(
|
itemList(
|
||||||
title: 'شماره شناسنامه',
|
title: 'شماره شناسنامه',
|
||||||
content: 'نا مشخص',
|
content: 'نا مشخص',
|
||||||
icon: Assets.vecUserSquareSvg,
|
icon: Assets.vec.userSquareSvg.path,
|
||||||
),
|
),
|
||||||
itemList(
|
itemList(
|
||||||
title: 'تاریخ تولد',
|
title: 'تاریخ تولد',
|
||||||
content: '1404/10/12',
|
content: '1404/10/12',
|
||||||
icon: Assets.vecCalendarSvg,
|
icon: Assets.vec.calendarSvg.path,
|
||||||
),
|
),
|
||||||
itemList(
|
itemList(
|
||||||
title: 'استان',
|
title: 'استان',
|
||||||
content: 'لرستان',
|
content: 'لرستان',
|
||||||
icon: Assets.vecPictureFrameSvg,
|
icon: Assets.vec.pictureFrameSvg.path,
|
||||||
|
),
|
||||||
|
itemList(
|
||||||
|
title: 'شهر',
|
||||||
|
content: 'خرم آباد',
|
||||||
|
icon: Assets.vec.mapSvg.path,
|
||||||
),
|
),
|
||||||
itemList(title: 'شهر', content: 'خرم آباد', icon: Assets.vecMapSvg),
|
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -201,11 +202,10 @@ class ProfilePage extends GetView<ProfileLogic> {
|
|||||||
if (icon != null)
|
if (icon != null)
|
||||||
Padding(
|
Padding(
|
||||||
padding: const EdgeInsets.only(left: 8.0),
|
padding: const EdgeInsets.only(left: 8.0),
|
||||||
child: vecWidget(
|
child: SvgGenImage.vec(icon).svg(
|
||||||
icon,
|
|
||||||
width: 20,
|
width: 20,
|
||||||
height: 20,
|
height: 20,
|
||||||
color: AppColor.blueNormal,
|
colorFilter: ColorFilter.mode(AppColor.blueNormal, BlendMode.srcIn),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Text(title, style: AppFonts.yekan12.copyWith(color: AppColor.blueNormal)),
|
Text(title, style: AppFonts.yekan12.copyWith(color: AppColor.blueNormal)),
|
||||||
@@ -238,11 +238,13 @@ class ProfilePage extends GetView<ProfileLogic> {
|
|||||||
borderRadius: BorderRadius.circular(8),
|
borderRadius: BorderRadius.circular(8),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
child: vecWidget(
|
child: SvgGenImage.vec(icon).svg(
|
||||||
icon,
|
|
||||||
width: 40,
|
width: 40,
|
||||||
height: 40,
|
height: 40,
|
||||||
color: selected ? AppColor.blueNormalActive : AppColor.blueNormal,
|
colorFilter: ColorFilter.mode(
|
||||||
|
selected ? AppColor.whiteLight : AppColor.blueNormal,
|
||||||
|
BlendMode.srcIn,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
SizedBox(height: 2),
|
SizedBox(height: 2),
|
||||||
|
|||||||
@@ -15,11 +15,13 @@ class RegistrationOfViolationPage
|
|||||||
backgroundColor: AppColor.bgLight,
|
backgroundColor: AppColor.bgLight,
|
||||||
appBar: RAppBar(
|
appBar: RAppBar(
|
||||||
title: 'ثبت تخلف',
|
title: 'ثبت تخلف',
|
||||||
leading: vecWidget(
|
leading: Assets.vec.messageAddSvg.svg(
|
||||||
Assets.vecMessageAddSvg,
|
|
||||||
color: Colors.white,
|
|
||||||
width: 16,
|
width: 16,
|
||||||
height: 16,
|
height: 16,
|
||||||
|
colorFilter: ColorFilter.mode(
|
||||||
|
Colors.white,
|
||||||
|
BlendMode.srcIn,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
additionalActions: [
|
additionalActions: [
|
||||||
RFab.smallAdd(onPressed: () => controller.countViolation.value++),
|
RFab.smallAdd(onPressed: () => controller.countViolation.value++),
|
||||||
|
|||||||
@@ -116,30 +116,54 @@ class RootPage extends GetView<RootLogic> {
|
|||||||
),
|
),
|
||||||
bottomNavigationBar: WaveBottomNavigation(
|
bottomNavigationBar: WaveBottomNavigation(
|
||||||
items: [
|
items: [
|
||||||
WaveBottomNavigationItem(title: 'خانه', icon: Assets.vecMapSvg),
|
WaveBottomNavigationItem(title: 'خانه', icon: Assets.vec.mapSvg.svg(
|
||||||
|
width: 32,
|
||||||
|
height: 32,
|
||||||
|
colorFilter: ColorFilter.mode(Colors.white, BlendMode.srcIn),
|
||||||
|
)),
|
||||||
WaveBottomNavigationItem(
|
WaveBottomNavigationItem(
|
||||||
title: 'عملیات',
|
title: 'عملیات',
|
||||||
icon: Assets.vecUserSvg,
|
icon: Assets.vec.userSvg.svg(
|
||||||
|
width: 32,
|
||||||
|
height: 32,
|
||||||
|
colorFilter: ColorFilter.mode(Colors.white, BlendMode.srcIn),
|
||||||
|
),
|
||||||
),
|
),
|
||||||
WaveBottomNavigationItem(
|
WaveBottomNavigationItem(
|
||||||
title: 'افزودن',
|
title: 'افزودن',
|
||||||
icon: Assets.vecAddSvg,
|
icon: Assets.vec.addSvg.svg(
|
||||||
|
width: 32,
|
||||||
|
height: 32,
|
||||||
|
colorFilter: ColorFilter.mode(Colors.white, BlendMode.srcIn),
|
||||||
|
),
|
||||||
),
|
),
|
||||||
WaveBottomNavigationItem(
|
WaveBottomNavigationItem(
|
||||||
title: 'آمار',
|
title: 'آمار',
|
||||||
icon: Assets.vecDiagramSvg,
|
icon: Assets.vec.diagramSvg.svg(width: 32,height: 32,colorFilter: ColorFilter.mode(Colors.white, BlendMode.srcIn),),
|
||||||
),
|
),
|
||||||
WaveBottomNavigationItem(
|
WaveBottomNavigationItem(
|
||||||
title: 'تماس',
|
title: 'تماس',
|
||||||
icon: Assets.vecCallSvg,
|
icon: Assets.vec.callSvg.svg(
|
||||||
|
width: 32,
|
||||||
|
height: 32,
|
||||||
|
colorFilter: ColorFilter.mode(Colors.white, BlendMode.srcIn),
|
||||||
|
),
|
||||||
),
|
),
|
||||||
WaveBottomNavigationItem(
|
WaveBottomNavigationItem(
|
||||||
title: 'مکان ',
|
title: 'مکان ',
|
||||||
icon: Assets.vecGpsSvg,
|
icon: Assets.vec.gpsSvg.svg(
|
||||||
|
width: 32,
|
||||||
|
height: 32,
|
||||||
|
colorFilter: ColorFilter.mode(Colors.white, BlendMode.srcIn),
|
||||||
|
),
|
||||||
),
|
),
|
||||||
WaveBottomNavigationItem(
|
WaveBottomNavigationItem(
|
||||||
title: 'تاریخ',
|
title: 'تاریخ',
|
||||||
icon: Assets.vecCalendarSvg,
|
icon: Assets.vec.calendarSvg.svg(
|
||||||
|
width: 32,
|
||||||
|
height: 32,
|
||||||
|
colorFilter: ColorFilter.mode(Colors.white, BlendMode.srcIn),
|
||||||
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
onPageChanged: (index) {
|
onPageChanged: (index) {
|
||||||
|
|||||||
17
packages/livestock/lib/presentation/page/root/logic.dart
Normal file
17
packages/livestock/lib/presentation/page/root/logic.dart
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
|
||||||
|
|
||||||
|
import 'package:rasadyar_core/core.dart';
|
||||||
|
|
||||||
|
class RootLogic extends GetxController {
|
||||||
|
@override
|
||||||
|
void onReady() {
|
||||||
|
// TODO: implement onReady
|
||||||
|
super.onReady();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void onClose() {
|
||||||
|
// TODO: implement onClose
|
||||||
|
super.onClose();
|
||||||
|
}
|
||||||
|
}
|
||||||
12
packages/livestock/lib/presentation/page/root/view.dart
Normal file
12
packages/livestock/lib/presentation/page/root/view.dart
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:rasadyar_core/core.dart';
|
||||||
|
import 'logic.dart';
|
||||||
|
|
||||||
|
class RootPage extends GetView<RootLogic> {
|
||||||
|
const RootPage({super.key});
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return Container();
|
||||||
|
}
|
||||||
|
}
|
||||||
63
pubspec.lock
63
pubspec.lock
@@ -17,6 +17,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "7.4.5"
|
version: "7.4.5"
|
||||||
|
archive:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: archive
|
||||||
|
sha256: "2fde1607386ab523f7a36bb3e7edb43bd58e6edaf2ffb29d8a6d578b297fdbbd"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "4.0.7"
|
||||||
args:
|
args:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -153,6 +161,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.19.1"
|
version: "1.19.1"
|
||||||
|
color:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: color
|
||||||
|
sha256: ddcdf1b3badd7008233f5acffaf20ca9f5dc2cd0172b75f68f24526a5f5725cb
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "3.0.0"
|
||||||
convert:
|
convert:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -262,6 +278,22 @@ packages:
|
|||||||
description: flutter
|
description: flutter
|
||||||
source: sdk
|
source: sdk
|
||||||
version: "0.0.0"
|
version: "0.0.0"
|
||||||
|
flutter_gen_core:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: flutter_gen_core
|
||||||
|
sha256: "3eaa2d3d8be58267ac4cd5e215ac965dd23cae0410dc073de2e82e227be32bfc"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "5.10.0"
|
||||||
|
flutter_gen_runner:
|
||||||
|
dependency: "direct dev"
|
||||||
|
description:
|
||||||
|
name: flutter_gen_runner
|
||||||
|
sha256: e74b4ead01df3e8f02e73a26ca856759dbbe8cb3fd60941ba9f4005cd0cd19c9
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "5.10.0"
|
||||||
flutter_lints:
|
flutter_lints:
|
||||||
dependency: "direct dev"
|
dependency: "direct dev"
|
||||||
description:
|
description:
|
||||||
@@ -493,6 +525,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.3.2"
|
version: "2.3.2"
|
||||||
|
hashcodes:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: hashcodes
|
||||||
|
sha256: "80f9410a5b3c8e110c4b7604546034749259f5d6dcca63e0d3c17c9258f1a651"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.0.0"
|
||||||
hive_ce:
|
hive_ce:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -541,6 +581,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.1.2"
|
version: "4.1.2"
|
||||||
|
image_size_getter:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: image_size_getter
|
||||||
|
sha256: "9a299e3af2ebbcfd1baf21456c3c884037ff524316c97d8e56035ea8fdf35653"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "2.4.0"
|
||||||
intl:
|
intl:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -885,6 +933,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.5.1"
|
version: "1.5.1"
|
||||||
|
posix:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: posix
|
||||||
|
sha256: f0d7856b6ca1887cfa6d1d394056a296ae33489db914e365e2044fdada449e62
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "6.0.2"
|
||||||
pretty_dio_logger:
|
pretty_dio_logger:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -938,6 +994,13 @@ packages:
|
|||||||
relative: true
|
relative: true
|
||||||
source: path
|
source: path
|
||||||
version: "1.0.1"
|
version: "1.0.1"
|
||||||
|
rasadyar_livestock:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
path: "packages/livestock"
|
||||||
|
relative: true
|
||||||
|
source: path
|
||||||
|
version: "1.0.0"
|
||||||
rxdart:
|
rxdart:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|||||||
Reference in New Issue
Block a user