m3_lightmeter/lib/screens/metering/screen_metering.dart

72 lines
2.7 KiB
Dart
Raw Normal View History

2022-10-24 20:25:38 +00:00
import 'package:flutter/material.dart';
2022-10-29 18:02:45 +00:00
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:lightmeter/data/models/ev_source_type.dart';
import 'package:lightmeter/data/models/photography_values/photography_value.dart';
import 'package:lightmeter/environment.dart';
import 'package:lightmeter/providers/ev_source_type_provider.dart';
2022-10-24 20:25:38 +00:00
2023-01-30 11:15:36 +00:00
import 'components/bottom_controls/provider_bottom_controls.dart';
import 'components/camera_container/provider_container_camera.dart';
import 'components/light_sensor_container/provider_container_light_sensor.dart';
import 'bloc_metering.dart';
import 'event_metering.dart';
import 'state_metering.dart';
2022-10-24 20:25:38 +00:00
class MeteringScreen extends StatefulWidget {
const MeteringScreen({super.key});
2022-10-24 20:25:38 +00:00
@override
State<MeteringScreen> createState() => _MeteringScreenState();
}
2022-11-26 19:29:00 +00:00
class _MeteringScreenState extends State<MeteringScreen> {
2023-01-26 15:03:48 +00:00
MeteringBloc get _bloc => context.read<MeteringBloc>();
@override
void didChangeDependencies() {
super.didChangeDependencies();
2023-01-26 15:03:48 +00:00
_bloc.add(StopTypeChangedEvent(context.watch<StopType>()));
}
2022-10-24 20:25:38 +00:00
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Theme.of(context).colorScheme.background,
body: Column(
children: [
Expanded(
child: BlocBuilder<MeteringBloc, MeteringState>(
builder: (context, state) => context.watch<EvSourceType>() == EvSourceType.camera
? CameraContainerProvider(
fastest: state.fastest,
slowest: state.slowest,
iso: state.iso,
nd: state.nd,
onIsoChanged: (value) => _bloc.add(IsoChangedEvent(value)),
onNdChanged: (value) => _bloc.add(NdChangedEvent(value)),
exposurePairs: state.exposurePairs,
)
: LightSensorContainerProvider(
fastest: state.fastest,
slowest: state.slowest,
iso: state.iso,
nd: state.nd,
onIsoChanged: (value) => _bloc.add(IsoChangedEvent(value)),
onNdChanged: (value) => _bloc.add(NdChangedEvent(value)),
exposurePairs: state.exposurePairs,
),
2023-01-26 15:03:48 +00:00
),
),
2023-01-30 11:15:36 +00:00
MeteringBottomControlsProvider(
onSwitchEvSourceType: context.read<Environment>().hasLightSensor
? EvSourceTypeProvider.of(context).toggleType
: null,
onMeasure: () => _bloc.add(const MeasureEvent()),
onSettings: () => Navigator.pushNamed(context, 'settings'),
),
],
2022-10-24 20:25:38 +00:00
),
);
}
}