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:localization/localization.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/comments_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: (_) => HospitalsProvider()),
ChangeNotifierProvider(create: (_) => AssetProvider()),
ChangeNotifierProvider(create: (_) => AllRequestsProvider()),
ChangeNotifierProvider(create: (_) => ServiceRequestsProvider()),
ChangeNotifierProvider(create: (_) => DepartmentsProvider()),
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),
],
).toShadowContainer,
),
).paddingOnly(start: 16, end: 16),
16.height,
Container(
margin: const EdgeInsets.only(left: 16, right: 16),
decoration: BoxDecoration(color: AppColor.neutral30, borderRadius: BorderRadius.circular(16)),
child: TabBar(
controller: _tabController,
@ -67,7 +68,7 @@ class _CalendarPageState extends State<CalendarPage> with SingleTickerProviderSt
),
8.height,
TabBarView(
physics: const NeverScrollableScrollPhysics(),
//physics: const NeverScrollableScrollPhysics(),
controller: _tabController,
children: const [
MonthlyFragment(),
@ -76,7 +77,7 @@ class _CalendarPageState extends State<CalendarPage> with SingleTickerProviderSt
],
).expanded,
],
).paddingAll(16),
),
),
);
}

@ -18,64 +18,71 @@ class MonthlyFragment extends StatefulWidget {
class _MonthlyFragmentState extends State<MonthlyFragment> {
PageController _controller;
@override
Widget build(BuildContext context) {
return Card(
child: SingleChildScrollView(
child: Column(
children: [
TableCalendar(
firstDay: DateTime.utc(2010, 10, 16),
lastDay: DateTime.utc(2030, 3, 14),
focusedDay: DateTime.now(),
calendarFormat: CalendarFormat.month,
weekendDays: const [],
onCalendarCreated: (controller) {
_controller = controller;
return SingleChildScrollView(
//physics: BouncingScrollPhysics(),
padding: const EdgeInsets.all(16),
child: Column(
children: [
TableCalendar(
firstDay: DateTime.utc(2010, 10, 16),
lastDay: DateTime.utc(2030, 3, 14),
focusedDay: DateTime.now(),
calendarFormat: CalendarFormat.month,
weekendDays: const [],
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(
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),
],
),
],
daysOfWeekHeight: 35.toScreenHeight,
headerStyle: const HeaderStyle(
leftChevronVisible: false,
rightChevronVisible: false,
formatButtonVisible: false,
headerPadding: EdgeInsets.all(0),
),
],
).paddingOnly(start: 16, end: 16, top: 8, bottom: 8),
),
calendarStyle: CalendarStyle(
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: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/models/enums/translation_keys.dart';
import '../../app_style/app_color.dart';
@ -12,7 +14,6 @@ class ContactUsBottomSheet extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
height: 300.toScreenHeight,
clipBehavior: Clip.antiAlias,
decoration: BoxDecoration(
color: Theme.of(context).scaffoldBackgroundColor,
@ -23,75 +24,54 @@ class ContactUsBottomSheet extends StatelessWidget {
),
padding: EdgeInsets.symmetric(horizontal: 16.toScreenWidth, vertical: 8.toScreenHeight),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Container(
width: 40.toScreenWidth,
height: 5.toScreenHeight,
decoration: BoxDecoration(color: AppColor.neutral40, borderRadius: BorderRadius.circular(30)),
),
16.height,
Align(
alignment: AlignmentDirectional.centerStart,
child: Padding(
padding: EdgeInsets.symmetric(vertical: 16.toScreenHeight),
child: Text(
context.translation.contactUs,
style: Theme.of(context).textTheme.titleLarge?.copyWith(fontWeight: FontWeight.w600),
),
child: Text(
context.translation.contactUs,
style: AppTextStyles.heading3.copyWith(fontWeight: FontWeight.w600, color: context.isDark ? AppColor.neutral30 : AppColor.neutral50),
),
),
16.height,
Row(
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,
Expanded(
child: _ContactCard(
iconName: "whatsapp",
title: context.translation.liveChat,
subtitle: context.translation.openWhatsapp,
),
),
contactItem(context.isDark, "whatsapp", context.translation.liveChat, context.translation.openWhatsapp).onPress(() {}).expanded,
],
),
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 build(BuildContext context) {
return Card(
child: Padding(
padding: EdgeInsets.all(16.toScreenWidth),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
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),
),
],
Widget contactItem(bool isDark, String iconName, String title, String subtitle) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
SvgPicture.asset(
"assets/images/$iconName.svg",
width: 32.toScreenWidth,
color: isDark ? AppColor.primary40 : AppColor.primary70,
),
),
);
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