moved center button size to the bar itself

This commit is contained in:
Vadim 2024-05-03 11:32:22 +02:00
parent 41353c9383
commit 04bd00b2c0
3 changed files with 40 additions and 43 deletions

View file

@ -55,33 +55,30 @@ class _MeteringMeasureButtonState extends State<MeteringMeasureButton> {
_isPressed = false;
});
},
child: SizedBox.fromSize(
size: const Size.square(Dimens.grid72),
child: Stack(
children: [
Center(
child: AnimatedScale(
duration: Dimens.durationS,
scale: _isPressed ? 0.9 : 1.0,
child: FilledCircle(
color: Theme.of(context).colorScheme.onSurface,
size: Dimens.grid72 - Dimens.grid8,
child: Center(
child: widget.ev != null ? _EvValueText(ev: widget.ev!, ev100: widget.ev100!) : null,
),
child: Stack(
children: [
Center(
child: AnimatedScale(
duration: Dimens.durationS,
scale: _isPressed ? 0.9 : 1.0,
child: FilledCircle(
color: Theme.of(context).colorScheme.onSurface,
size: Dimens.grid72 - Dimens.grid8,
child: Center(
child: widget.ev != null ? _EvValueText(ev: widget.ev!, ev100: widget.ev100!) : null,
),
),
),
Positioned.fill(
child: CircularProgressIndicator(
/// This key is needed to make indicator start from the same point every time
key: ValueKey(widget.isMetering),
color: Theme.of(context).colorScheme.onSurface,
value: widget.isMetering ? null : 1,
),
),
Positioned.fill(
child: CircularProgressIndicator(
/// This key is needed to make indicator start from the same point every time
key: ValueKey(widget.isMetering),
color: Theme.of(context).colorScheme.onSurface,
value: widget.isMetering ? null : 1,
),
],
),
),
],
),
);
}

View file

@ -3,8 +3,8 @@ import 'package:lightmeter/res/dimens.dart';
class BottomControlsBar extends StatelessWidget {
final Widget center;
final IconButton? left;
final IconButton? right;
final Widget? left;
final Widget? right;
const BottomControlsBar({
required this.center,
@ -42,7 +42,10 @@ class BottomControlsBar extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
if (left != null) Expanded(child: Center(child: left)) else const Spacer(),
center,
SizedBox.fromSize(
size: const Size.square(Dimens.grid72),
child: center,
),
if (right != null) Expanded(child: Center(child: right)) else const Spacer(),
],
),

View file

@ -75,7 +75,6 @@ class _TimerScreenState extends State<TimerScreen> with TickerProviderStateMixin
fontSize: Dimens.grid24,
),
),
actions: [if (Navigator.of(context).canPop()) const CloseButton()],
),
body: SafeArea(
bottom: false,
@ -108,25 +107,23 @@ class _TimerScreenState extends State<TimerScreen> with TickerProviderStateMixin
},
icon: const Icon(Icons.restore),
),
center: SizedBox.fromSize(
size: const Size.square(Dimens.grid72),
child: BlocBuilder<TimerBloc, TimerState>(
builder: (_, state) => FloatingActionButton(
shape: state is TimerResumedState ? null : const CircleBorder(),
onPressed: () {
if (timelineAnimation.value == 0) {
return;
}
final event = state is TimerStoppedState ? const StartTimerEvent() : const StopTimerEvent();
context.read<TimerBloc>().add(event);
},
child: AnimatedIcon(
icon: AnimatedIcons.play_pause,
progress: startStopIconAnimation,
),
center: BlocBuilder<TimerBloc, TimerState>(
builder: (_, state) => FloatingActionButton(
shape: state is TimerResumedState ? null : const CircleBorder(),
onPressed: () {
if (timelineAnimation.value == 0) {
return;
}
final event = state is TimerStoppedState ? const StartTimerEvent() : const StopTimerEvent();
context.read<TimerBloc>().add(event);
},
child: AnimatedIcon(
icon: AnimatedIcons.play_pause,
progress: startStopIconAnimation,
),
),
),
right: Navigator.of(context).canPop() ? const CloseButton() : null,
),
],
),