improvements.

main_design2.0
Sikander Saleem 2 years ago
parent d908fe1c9d
commit 67a7fcfe54

@ -0,0 +1,47 @@
import 'package:flutter/widgets.dart';
import 'package:http/http.dart';
class AllRequestsProvider extends ChangeNotifier {
bool isLoading;
// Future<int> getAllRequests() async {
// if (isLoading == true) return -2;
// isLoading = true;
// if (serviceRequests?.isEmpty ?? false) notifyListeners();
// Response response;
// try {
// Map<String, dynamic> body = {};
// body.addAll(search.toMap());
// body["pageNumber"] = (serviceRequests?.length ?? 0) ~/ pageItemNumber + 1;
// body["pageSize"] = pageItemNumber;
//
// response = await ApiManager.instance.post(
// URLs.getServiceRequests,
// body: body,
// );
//
// stateCode = response.statusCode;
// if (response.statusCode >= 200 && response.statusCode < 300) {
// // client's request was successfully received
// List requestsListJson = json.decode(response.body)["data"];
// List<ServiceRequest> serviceRequestsPage = requestsListJson.map((request) => ServiceRequest.fromJson(request)).toList();
// serviceRequests ??= [];
// serviceRequests.addAll(serviceRequestsPage);
// notifyListeners();
// if (serviceRequestsPage.length == pageItemNumber) {
// nextPage = true;
// } else {
// nextPage = false;
// }
// }
// isLoading = false;
// notifyListeners();
// return response.statusCode;
// } catch (error) {
// isLoading = false;
// stateCode = -1;
// notifyListeners();
// return -1;
// }
// }
}

@ -6,6 +6,7 @@ import 'package:flutter/services.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:localization/localization.dart'; import 'package:localization/localization.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:test_sa/controllers/providers/api/all_requests_provider.dart';
import 'package:test_sa/controllers/providers/api/asset_transfer_provider.dart'; import 'package:test_sa/controllers/providers/api/asset_transfer_provider.dart';
import 'package:test_sa/controllers/providers/api/comments_provider.dart'; import 'package:test_sa/controllers/providers/api/comments_provider.dart';
import 'package:test_sa/controllers/providers/api/departments_provider.dart'; import 'package:test_sa/controllers/providers/api/departments_provider.dart';
@ -139,6 +140,7 @@ class MyApp extends StatelessWidget {
ChangeNotifierProvider(create: (_) => SiteProvider()), ChangeNotifierProvider(create: (_) => SiteProvider()),
ChangeNotifierProvider(create: (_) => HospitalsProvider()), ChangeNotifierProvider(create: (_) => HospitalsProvider()),
ChangeNotifierProvider(create: (_) => AssetProvider()), ChangeNotifierProvider(create: (_) => AssetProvider()),
ChangeNotifierProvider(create: (_) => AllRequestsProvider()),
ChangeNotifierProvider(create: (_) => ServiceRequestsProvider()), ChangeNotifierProvider(create: (_) => ServiceRequestsProvider()),
ChangeNotifierProvider(create: (_) => DepartmentsProvider()), ChangeNotifierProvider(create: (_) => DepartmentsProvider()),
ChangeNotifierProvider(create: (_) => NotificationsProvider()), ChangeNotifierProvider(create: (_) => NotificationsProvider()),

@ -44,9 +44,10 @@ class _CalendarPageState extends State<CalendarPage> with SingleTickerProviderSt
"09:00 to 18:00".bodyText(context).custom(color: AppColor.neutral50), "09:00 to 18:00".bodyText(context).custom(color: AppColor.neutral50),
], ],
).toShadowContainer, ).toShadowContainer,
), ).paddingOnly(start: 16, end: 16),
16.height, 16.height,
Container( Container(
margin: const EdgeInsets.only(left: 16, right: 16),
decoration: BoxDecoration(color: AppColor.neutral30, borderRadius: BorderRadius.circular(16)), decoration: BoxDecoration(color: AppColor.neutral30, borderRadius: BorderRadius.circular(16)),
child: TabBar( child: TabBar(
controller: _tabController, controller: _tabController,
@ -67,7 +68,7 @@ class _CalendarPageState extends State<CalendarPage> with SingleTickerProviderSt
), ),
8.height, 8.height,
TabBarView( TabBarView(
physics: const NeverScrollableScrollPhysics(), //physics: const NeverScrollableScrollPhysics(),
controller: _tabController, controller: _tabController,
children: const [ children: const [
MonthlyFragment(), MonthlyFragment(),
@ -76,7 +77,7 @@ class _CalendarPageState extends State<CalendarPage> with SingleTickerProviderSt
], ],
).expanded, ).expanded,
], ],
).paddingAll(16), ),
), ),
); );
} }

@ -18,64 +18,71 @@ class MonthlyFragment extends StatefulWidget {
class _MonthlyFragmentState extends State<MonthlyFragment> { class _MonthlyFragmentState extends State<MonthlyFragment> {
PageController _controller; PageController _controller;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Card( return SingleChildScrollView(
child: SingleChildScrollView( //physics: BouncingScrollPhysics(),
child: Column( padding: const EdgeInsets.all(16),
children: [ child: Column(
TableCalendar( children: [
firstDay: DateTime.utc(2010, 10, 16), TableCalendar(
lastDay: DateTime.utc(2030, 3, 14), firstDay: DateTime.utc(2010, 10, 16),
focusedDay: DateTime.now(), lastDay: DateTime.utc(2030, 3, 14),
calendarFormat: CalendarFormat.month, focusedDay: DateTime.now(),
weekendDays: const [], calendarFormat: CalendarFormat.month,
onCalendarCreated: (controller) { weekendDays: const [],
_controller = controller; availableGestures: AvailableGestures.none,
onCalendarCreated: (controller) {
_controller = controller;
},
calendarBuilders: CalendarBuilders(
headerTitleBuilder: (context, dateTime) => CalendarHeader(dateFormat: DateFormat("MMMM, yyyy"), dateTime: dateTime),
dowBuilder: (context, dateTime) {
final day = DateFormat("EE").format(dateTime).toUpperCase();
return Align(alignment: Alignment.center, child: day.bodyText(context).custom(color: AppColor.neutral50));
},
defaultBuilder: (context, dateTime, _) {
final day = DateFormat("d").format(dateTime);
return CalendarDaysCard(day: day);
}, },
calendarBuilders: CalendarBuilders(
headerTitleBuilder: (context, dateTime) => CalendarHeader(dateFormat: DateFormat("MMMM, yyyy"), dateTime: dateTime),
dowBuilder: (context, dateTime) {
final day = DateFormat("EE").format(dateTime).toUpperCase();
return Align(alignment: Alignment.center, child: day.bodyText(context).custom(color: AppColor.neutral50));
},
defaultBuilder: (context, dateTime, _) {
final day = DateFormat("d").format(dateTime);
return CalendarDaysCard(day: day);
},
),
daysOfWeekHeight: 35.toScreenHeight,
headerStyle: const HeaderStyle(leftChevronVisible: false, rightChevronVisible: false, formatButtonVisible: false),
calendarStyle: CalendarStyle(
isTodayHighlighted: false,
defaultTextStyle: AppTextStyles.bodyText,
defaultDecoration: const BoxDecoration(shape: BoxShape.circle, color: AppColor.neutral30),
),
), ),
Column( daysOfWeekHeight: 35.toScreenHeight,
mainAxisSize: MainAxisSize.min, headerStyle: const HeaderStyle(
children: [ leftChevronVisible: false,
16.height, rightChevronVisible: false,
Row( formatButtonVisible: false,
children: [ headerPadding: EdgeInsets.all(0),
const CircleAvatar(backgroundColor: AppColor.primary40, radius: 8),
8.width,
"My Requests".heading6(context),
],
),
16.height,
Row(
children: [
const CircleAvatar(backgroundColor: AppColor.green50, radius: 8),
8.width,
"My Team Requests".heading6(context),
],
),
],
), ),
], calendarStyle: CalendarStyle(
).paddingOnly(start: 16, end: 16, top: 8, bottom: 8), isTodayHighlighted: false,
), defaultTextStyle: AppTextStyles.bodyText,
defaultDecoration: const BoxDecoration(shape: BoxShape.circle, color: AppColor.neutral30),
),
),
Column(
mainAxisSize: MainAxisSize.min,
children: [
16.height,
Row(
children: [
const CircleAvatar(backgroundColor: AppColor.primary40, radius: 8),
8.width,
"My Requests".heading6(context),
],
),
16.height,
Row(
children: [
const CircleAvatar(backgroundColor: AppColor.green50, radius: 8),
8.width,
"My Team Requests".heading6(context),
],
),
],
),
],
).toShadowContainer,
); );
} }
} }

@ -2,6 +2,8 @@ import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/int_extensions.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/models/enums/translation_keys.dart'; import 'package:test_sa/models/enums/translation_keys.dart';
import '../../app_style/app_color.dart'; import '../../app_style/app_color.dart';
@ -12,7 +14,6 @@ class ContactUsBottomSheet extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Container( return Container(
height: 300.toScreenHeight,
clipBehavior: Clip.antiAlias, clipBehavior: Clip.antiAlias,
decoration: BoxDecoration( decoration: BoxDecoration(
color: Theme.of(context).scaffoldBackgroundColor, color: Theme.of(context).scaffoldBackgroundColor,
@ -23,75 +24,54 @@ class ContactUsBottomSheet extends StatelessWidget {
), ),
padding: EdgeInsets.symmetric(horizontal: 16.toScreenWidth, vertical: 8.toScreenHeight), padding: EdgeInsets.symmetric(horizontal: 16.toScreenWidth, vertical: 8.toScreenHeight),
child: Column( child: Column(
mainAxisSize: MainAxisSize.min,
children: [ children: [
Container( Container(
width: 40.toScreenWidth, width: 40.toScreenWidth,
height: 5.toScreenHeight, height: 5.toScreenHeight,
decoration: BoxDecoration(color: AppColor.neutral40, borderRadius: BorderRadius.circular(30)), decoration: BoxDecoration(color: AppColor.neutral40, borderRadius: BorderRadius.circular(30)),
), ),
16.height,
Align( Align(
alignment: AlignmentDirectional.centerStart, alignment: AlignmentDirectional.centerStart,
child: Padding( child: Text(
padding: EdgeInsets.symmetric(vertical: 16.toScreenHeight), context.translation.contactUs,
child: Text( style: AppTextStyles.heading3.copyWith(fontWeight: FontWeight.w600, color: context.isDark ? AppColor.neutral30 : AppColor.neutral50),
context.translation.contactUs,
style: Theme.of(context).textTheme.titleLarge?.copyWith(fontWeight: FontWeight.w600),
),
), ),
), ),
16.height,
Row( Row(
children: [ children: [
Expanded(child: _ContactCard(iconName: "phone", title: context.translation.callUs, subtitle: "+966 546345567")), contactItem(context.isDark, "phone", context.translation.callUs, "+966 546345567").onPress(() { }).expanded,
16.width, 16.width,
Expanded( contactItem(context.isDark, "whatsapp", context.translation.liveChat, context.translation.openWhatsapp).onPress(() {}).expanded,
child: _ContactCard(
iconName: "whatsapp",
title: context.translation.liveChat,
subtitle: context.translation.openWhatsapp,
),
),
], ],
), ),
32.height,
], ],
), ),
); );
} }
}
class _ContactCard extends StatelessWidget {
final String iconName, title, subtitle;
const _ContactCard({
Key key,
@required this.iconName,
@required this.title,
@required this.subtitle,
}) : super(key: key);
@override Widget contactItem(bool isDark, String iconName, String title, String subtitle) {
Widget build(BuildContext context) { return Column(
return Card( crossAxisAlignment: CrossAxisAlignment.start,
child: Padding( children: [
padding: EdgeInsets.all(16.toScreenWidth), SvgPicture.asset(
child: Column( "assets/images/$iconName.svg",
crossAxisAlignment: CrossAxisAlignment.start, width: 32.toScreenWidth,
children: [ color: isDark ? AppColor.primary40 : AppColor.primary70,
SvgPicture.asset(
"assets/images/$iconName.svg",
width: 32.toScreenWidth,
color: context.isDark ? AppColor.primary40 : AppColor.primary70,
),
30.height,
Text(
title,
style: Theme.of(context).textTheme.titleLarge?.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50),
),
Text(
subtitle,
style: Theme.of(context).textTheme.bodyMedium?.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20),
),
],
), ),
), 30.height,
); Text(
title,
style: AppTextStyles.heading6.copyWith(color: isDark ? AppColor.neutral30 : AppColor.neutral50),
),
Text(
subtitle,
style: AppTextStyles.bodyText.copyWith(color: isDark ? AppColor.neutral10 : AppColor.neutral20),
),
],
).toShadowContainer;
} }
} }

Loading…
Cancel
Save