Merge remote-tracking branch 'origin/main_design2.0' into main_design2.0

# Conflicts:
#	lib/views/widgets/equipment/single_device_picker.dart
main_design2.0
Sikander Saleem 2 years ago
commit 487b04514a

@ -0,0 +1,3 @@
<svg width="17" height="16" viewBox="0 0 17 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M11.9499 9.51862C12.6027 8.54479 12.984 7.37301 12.984 6.11339C12.984 2.74246 10.2534 0 6.89703 0C3.54065 0 0.810059 2.74246 0.810059 6.11336C0.810059 9.48425 3.54068 12.2267 6.89706 12.2267C8.176 12.2267 9.36378 11.8282 10.3445 11.1488L15.1958 16L16.8101 14.3788L11.9499 9.51862ZM6.89706 10.5097C4.48871 10.5097 2.52931 8.54181 2.52931 6.12299C2.52931 3.70421 4.48868 1.73634 6.89706 1.73634C9.30543 1.73634 11.2648 3.70421 11.2648 6.12302C11.2648 8.54184 9.3054 10.5097 6.89706 10.5097Z" fill="#767676"/>
</svg>

After

Width:  |  Height:  |  Size: 619 B

@ -37,6 +37,7 @@
"back": "السابق",
"search": "بحث",
"searchByName": "بحث بالاسم",
"searchByAssetNumber": "بحث برقم الجهاز",
"address": "العنوان",
"addressNotFound": "لا يوجد عنوان",
"addressValidateMessage": "العنوان مطلوب",

@ -37,6 +37,7 @@
"back": "Back",
"search": "Search",
"searchByName": "Search by name",
"searchByAssetNumber": "Search by asset number",
"address": "Address",
"addressNotFound": "Address not found",
"addressValidateMessage": "Address validateMessage",

@ -1,7 +1,6 @@
import 'package:flutter/material.dart';
import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/models/enums/translation_keys.dart';
import 'package:test_sa/new_views/app_style/app_color.dart';
import 'package:test_sa/new_views/app_style/app_text_style.dart';
@ -20,11 +19,13 @@ class AppTextFormField extends StatefulWidget {
final TextAlign textAlign;
final FocusNode node;
final Widget suffixIcon;
final Widget prefixIcon;
final IconData prefixIconData;
final int prefixIconSize;
final TextEditingController controller;
final TextInputAction textInputAction;
final VoidCallback onAction;
final Color backgroundColor;
const AppTextFormField({
Key key,
@ -42,11 +43,13 @@ class AppTextFormField extends StatefulWidget {
this.style,
this.textAlign,
this.suffixIcon,
this.prefixIcon,
this.prefixIconData,
this.prefixIconSize,
this.controller,
this.textInputAction,
this.onAction,
this.backgroundColor,
}) : super(key: key);
@override
@ -93,19 +96,20 @@ class _AppTextFormFieldState extends State<AppTextFormField> {
constraints: const BoxConstraints(),
suffixIconConstraints: const BoxConstraints(minWidth: 0),
filled: true,
fillColor: context.isDark ? AppColor.neutral50 : Colors.white,
fillColor: widget.backgroundColor ?? (context.isDark ? AppColor.neutral50 : Colors.white),
errorStyle: AppTextStyle.tiny.copyWith(color: context.isDark ? AppColor.red50 : AppColor.red60),
floatingLabelStyle: AppTextStyle.body1?.copyWith(fontWeight: FontWeight.w500, color: context.isDark ? null : AppColor.neutral20),
hintText: widget.hintText ?? "",
labelText: widget.labelText ?? "",
suffixIcon: widget.suffixIcon ??
prefixIcon: widget.prefixIcon ??
(widget.prefixIconData == null
? null
: Icon(
widget.prefixIconData,
size: widget.prefixIconSize == null ? 20.toScreenWidth : (widget.prefixIconSize - 10).toScreenWidth,
color: AppColor.neutral70,
)),
widget.prefixIconData,
size: widget.prefixIconSize == null ? 20.toScreenWidth : (widget.prefixIconSize - 10).toScreenWidth,
color: AppColor.neutral70,
)),
suffixIcon: widget.suffixIcon,
),
),
);

@ -0,0 +1,33 @@
import 'package:flutter/material.dart';
import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart';
import '../../models/device/device.dart';
class AssetInfoCard extends StatelessWidget {
const AssetInfoCard({Key key, @required this.asset}) : super(key: key);
final Device asset;
@override
Widget build(BuildContext context) {
return Card(
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
asset.modelDefinition?.assetName?.heading5(context),
8.height,
"${context.translation.assetNo}: ${asset.assetNumber}".bodyText(context),
"${context.translation.manufacture}: ${asset.modelDefinition?.manufacturerName}".bodyText(context),
"${context.translation.model}: ${asset.modelDefinition?.modelName}".bodyText(context),
"${context.translation.serialNumber}: ${asset.assetNumber}".bodyText(context),
const Divider().defaultStyle(context),
"${context.translation.department}: ${asset.department?.departmentName}".bodyText(context),
"${context.translation.site}: ${asset.site?.custName}".bodyText(context),
],
).paddingAll(16),
);
}
}

@ -1,12 +1,12 @@
import 'package:flutter/material.dart';
import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/views/widgets/equipment/single_device_picker.dart';
import '../../../models/device/device.dart';
import '../../../new_views/app_style/app_color.dart';
import '../../../new_views/common_widgets/asset_info_card.dart';
class PickAsset extends StatelessWidget {
final Function(Device) onPickAsset;
@ -36,30 +36,12 @@ class PickAsset extends StatelessWidget {
Device device = await Navigator.of(context).pushNamed(SingleDevicePicker.id) as Device;
onPickAsset(device);
}).expanded,
"qr".toSvgAsset(height: 24, fit: BoxFit.fitHeight).onPress(() {
/// TODO [Zaid] : open qr reader
}),
"qr".toSvgAsset(height: 24, fit: BoxFit.fitHeight, color: context.isDark ? AppColor.primary40 : AppColor.primary70),
],
// TODO [Zaid] : if you have container as parent widget, no need to add padding widget separately
).paddingOnly(start: 16, end: 16, top: 8, bottom: 8),
),
if (device != null)
Card(
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
device.modelDefinition?.assetName?.heading5(context),
8.height,
"${context.translation.assetNo}: ${device.assetNumber}".bodyText(context),
"${context.translation.manufacture}: ${device.modelDefinition?.manufacturerName}".bodyText(context),
"${context.translation.model}: ${device.modelDefinition?.modelName}".bodyText(context),
"${context.translation.serialNumber}: ${device.assetNumber}".bodyText(context),
const Divider().defaultStyle(context),
"${context.translation.department}: ${device.department?.departmentName}".bodyText(context),
"${context.translation.site}: ${device.site?.custName}".bodyText(context),
],
).paddingAll(16),
).paddingOnly(top: 8),
if (device != null) AssetInfoCard(asset: device).paddingOnly(top: 8),
],
);
}

@ -1,6 +1,5 @@
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:test_sa/controllers/localization/localization.dart';
import 'package:test_sa/controllers/providers/api/devices_provider.dart';
import 'package:test_sa/controllers/providers/api/user_provider.dart';
import 'package:test_sa/controllers/providers/settings/setting_provider.dart';
@ -12,11 +11,13 @@ import 'package:test_sa/views/widgets/equipment/asset_detail_page.dart';
import 'package:test_sa/views/widgets/equipment/asset_item_gridview.dart';
import 'package:test_sa/views/widgets/equipment/asset_item_listview.dart';
import 'package:test_sa/views/widgets/loaders/lazy_loading.dart';
import 'package:test_sa/new_views/common_widgets/app_text_form_field.dart';
import 'package:test_sa/views/widgets/loaders/loading_manager.dart';
import 'package:test_sa/views/widgets/loaders/no_item_found.dart';
import '../../../models/device/device.dart';
import '../app_text_form_field.dart';
import '../../../new_views/app_style/app_color.dart';
import '../../../new_views/common_widgets/asset_info_card.dart';
import '../qr/scan_qr.dart';
class SingleDevicePicker extends StatefulWidget {
@ -145,11 +146,11 @@ class _SingleDevicePickerState extends State<SingleDevicePicker> {
padding: const EdgeInsets.symmetric(vertical: 8, horizontal: 16),
child: Column(
children: [
ATextFormField(
hintText: "Search by Asset Number",
AppTextFormField(
labelText: context.translation.searchByAssetNumber,
controller: numberController,
style: Theme.of(context).textTheme.subtitle1,
suffixIcon: const Icon(Icons.search_rounded),
prefixIcon: "search".toSvgAsset().paddingAll(16),
backgroundColor: context.isDark ? AppColor.neutral40 : AppColor.neutral30,
textInputAction: TextInputAction.search,
onAction: () async {
_devicesProvider.reset();
@ -162,11 +163,11 @@ class _SingleDevicePickerState extends State<SingleDevicePicker> {
const SizedBox(
height: 8,
),
ATextFormField(
hintText: context.translation.searchBySn,
AppTextFormField(
labelText: context.translation.searchBySn,
controller: snController,
style: Theme.of(context).textTheme.subtitle1,
suffixIcon: const Icon(Icons.search_rounded),
prefixIcon: "search".toSvgAsset().paddingAll(16),
backgroundColor: context.isDark ? AppColor.neutral40 : AppColor.neutral30,
textInputAction: TextInputAction.search,
onAction: () async {
_devicesProvider.reset();
@ -226,7 +227,7 @@ class _SingleDevicePickerState extends State<SingleDevicePicker> {
),
floatingActionButton: FloatingActionButton(
heroTag: "some tag 2",
child: const Icon(Icons.qr_code_scanner),
child: "qr".toSvgAsset(height: 32, fit: BoxFit.fitHeight, color: Theme.of(context).scaffoldBackgroundColor),
onPressed: () async {
String result = await Navigator.of(context).push(
MaterialPageRoute(builder: (_) => const ScanQr()),

@ -1,11 +1,9 @@
import 'package:audioplayers/audioplayers.dart';
import 'package:flutter/material.dart';
import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/new_views/app_style/app_color.dart';
import 'package:test_sa/new_views/app_style/app_text_style.dart';
import 'package:test_sa/views/app_style/sizing.dart';
import '../../app_style/colors.dart';
class ASoundPlayer extends StatefulWidget {
final String audio;
@ -33,13 +31,14 @@ class _ASoundPlayerState extends State<ASoundPlayer> {
decoration: ShapeDecoration(
color: Colors.white,
shape: RoundedRectangleBorder(
side: const BorderSide(width: 1, color: Color(0xFFEAF1F4)),
side: BorderSide(width: 1, color: (context.isDark ? AppColor.neutral20 : AppColor.neutral30)),
borderRadius: BorderRadius.circular(32),
),
),
child: Icon(
icon,
color: const Color(0xff163A51).withOpacity(0.5),
size: 30,
color: (context.isDark ? AppColor.primary40 : AppColor.primary70).withOpacity(0.5),
),
).onPress(onpress);
}
@ -66,7 +65,7 @@ class _ASoundPlayerState extends State<ASoundPlayer> {
rebuild();
});
case PlayerState.stopped:
return audioPlayerButton(_isLocalFile ? Icons.play_circle_fill_outlined : Icons.download_rounded, () async {
return audioPlayerButton(_isLocalFile ? Icons.play_arrow_rounded : Icons.download_rounded, () async {
_failedToLoad = false;
try {
await _audioPlayer.play(
@ -182,7 +181,7 @@ class _ASoundPlayerState extends State<ASoundPlayer> {
value: _audioPosition?.inMilliseconds?.toDouble() ?? 0.0,
min: 0,
max: _audioTime?.inMilliseconds?.toDouble() ?? 60.0,
activeColor: AppColor.primary70,
activeColor: context.isDark ? AppColor.primary40 : AppColor.primary70,
inactiveColor: AppColor.neutral30,
onChangeStart: (value) {
_sliderMoving = true;

Loading…
Cancel
Save