production

This commit is contained in:
2026-08-28 11:13:15 +05:30
parent d7348e253f
commit 5723d373b2
162 changed files with 17924 additions and 7026 deletions

View File

@@ -23,6 +23,7 @@ import 'package:miler/views/Dashboard/profile/informations/order_alert_sound.dar
import 'package:miler/views/Dashboard/summary/summary.dart';
import 'package:miler/views/helpers/constants/miler_type.dart';
import 'package:miler/views/helpers/constants/Colorconstants.dart';
import 'package:miler/views/helpers/constants/narrative.dart';
import 'package:miler/views/helpers/constants/design_constants.dart';
import 'package:miler/views/helpers/widgets/miler_app_bar.dart';
import 'package:miler/views/helpers/widgets/app_widgets.dart';
@@ -163,13 +164,26 @@ class _ProfilePageState extends State<ProfilePage> {
// rows on the bare background, so the whole tab read a shade dirtier than
// the three either side of it. Four tabs of one app should not disagree
// about what colour the paper is.
// The brand shows through the sheet's two top corners — see [MilerSheet].
// ── The corner has to have something behind it ──
//
// Account had the sheet but not the shape: its two top corners clipped
// onto a white ground, so the curve revealed white and read as a
// rounding artefact rather than as the brand coming through. The brand
// goes behind the sheet, the same as the other three tabs; the page's
// own colour is the sheet's [MilerSurface.canvas].
backgroundColor: ColorConstants.primary,
// Account was the odd tab out: no top bar at all, just a 28sp inline
// heading scrolling away with the content, while the other three sat
// under a fixed branded bar. Four tabs of one app should not disagree
// about where the page title lives.
appBar: MilerAppBar(title: 'Account', trailing: _bell()),
appBar: MilerAppBar(
title: 'Account',
trailing: _bell(),
// The bar's curve opens onto whatever is directly under it, and under
// this bar is the sheet's canvas rather than the app's paper. See
// [milerBrandSurface].
pageColor: Narrative.canvas,
),
// ── Pull to refresh ──
//
// A pull here used to drag the page off the bottom of the screen and
@@ -187,7 +201,7 @@ class _ProfilePageState extends State<ProfilePage> {
// layered pages and one flat one. Same recipe here: canvas ground, one
// panel per section, the labels on the canvas between them.
body: MilerSheet(
color: MilerSurface.canvas,
color: Narrative.canvas,
child: SettingsBody(
onRefresh: _refresh,
// The page's single left edge — the same gutter Activity uses, so a
@@ -233,8 +247,8 @@ class _ProfilePageState extends State<ProfilePage> {
// he has finished today, which is the glance he actually makes
// between stops.
Padding(
padding: EdgeInsetsDirectional.only(
start: MilerSurface.panelGutter + MilerSurface.panelPad,
padding: const EdgeInsetsDirectional.only(
start: MilerSurface.panelGutter,
),
child: const SettingsLabel('Money'),
),
@@ -257,8 +271,8 @@ class _ProfilePageState extends State<ProfilePage> {
SizedBox(height: 20.h),
Padding(
padding: EdgeInsetsDirectional.only(
start: MilerSurface.panelGutter + MilerSurface.panelPad,
padding: const EdgeInsetsDirectional.only(
start: MilerSurface.panelGutter,
),
child: const SettingsLabel('Account'),
),
@@ -305,8 +319,8 @@ class _ProfilePageState extends State<ProfilePage> {
SizedBox(height: 20.h),
Padding(
padding: EdgeInsetsDirectional.only(
start: MilerSurface.panelGutter + MilerSurface.panelPad,
padding: const EdgeInsetsDirectional.only(
start: MilerSurface.panelGutter,
),
child: const SettingsLabel('Support'),
),

View File

@@ -52,20 +52,21 @@ class _FaqPageState extends State<FaqPage> {
static const List<_Faq> _faqs = [
_Faq(
'What is a trip, and why can I only work one stop at a time?',
'Your hub assigns a whole slot as one trip: pick up from every customer '
'on it, then return to the hub. The stops are ordered for you, so the '
'Your office assigns a whole slot as one trip: pick up from every '
'customer on it, then return to base. The stops are ordered for you, '
'so the '
'app opens them one at a time — finish the active stop before the '
'next one unlocks.',
),
_Faq(
'A customer is not answering. Can I move them to the end?',
'No — a trip keeps its order. Skip the stop with a reason instead. It '
'comes out of your queue, your hub sees why, and the rest of the trip '
'comes out of your queue, your office sees why, and the rest of the trip '
'carries on unchanged.',
),
_Faq(
'I am running late because of traffic. What should I do?',
'Keep the app open so your location keeps reporting — the hub can see '
'Keep the app open so your location keeps reporting — your office can see '
'the delay without you calling. If a customer needs to know, use the '
'call button on the stop.',
),
@@ -79,12 +80,12 @@ class _FaqPageState extends State<FaqPage> {
_Faq(
'I collected cash. Whose money is it?',
'It is the customer\'s payment to the business you are picking up from, '
'held by you until you hand it in at the hub. Record it in the app at '
'held by you until you hand it in at the end of your shift. Record it in the app at '
'the stop so the amount you carry and the amount expected match.',
),
_Faq(
'When do I get paid, and what are points?',
'Earnings are settled by your hub on its regular cycle — Earnings shows '
'Earnings are settled by your office on its regular cycle — Earnings shows '
'what has been counted so far. Points are separate: they are earned '
'on completed trips and shown under Rewards.',
),
@@ -98,7 +99,7 @@ class _FaqPageState extends State<FaqPage> {
'How do I change my name, photo or address?',
'Account > Edit Profile for your name, photo and email; Account > Saved '
'Address for your address. Your mobile number is fixed to the one '
'your hub registered — contact support to change it.',
'your office registered — contact support to change it.',
),
];

View File

@@ -54,7 +54,7 @@ class HelpCenter extends StatelessWidget {
),
SettingsRow(
icon: LucideIcons.phone,
title: 'Call the hub',
title: 'Call the office',
subtitle: 'For anything that cannot wait',
onTap: () => _dial(context, _supportPhone),
),

View File

@@ -489,7 +489,7 @@ class _RiderRewardsPageState extends State<RiderRewardsPage> {
_ruleDivider(),
_rule(
icon: LucideIcons.route,
title: 'Ride the route your hub assigned',
title: 'Ride the route your office assigned',
body:
'Wandering well past the planned distance breaks the '
'route check for that stop.',
@@ -534,8 +534,8 @@ class _RiderRewardsPageState extends State<RiderRewardsPage> {
SizedBox(width: 7.w),
Expanded(
child: Text(
'Your hub sets what each status is worth and can change the '
'thresholds. Ask your hub manager what your level earns you.',
'Your office sets what each status is worth and can change the '
'thresholds. Ask your manager what your level earns you.',
style: TextStyle(
fontSize: 11.5.sp,
height: 1.45,

View File

@@ -132,7 +132,7 @@ class _SavedAddressPageState extends State<SavedAddressPage> {
children: [
_editing ? _editor() : _addressCard(),
const SettingsHint(
'Your hub uses this to work out which slots start near you, '
'Your office uses this to work out which slots start near you, '
'and it is where your shift is assumed to end.',
),
SizedBox(height: 24.h),