mirror of
https://github.com/vodemn/m3_lightmeter.git
synced 2025-07-31 18:30:44 +00:00

* typos * added `LogbookPhotosProvider` * implemented `LogbookScreen` * implemented `LogbookPhotoEditScreen` * added photo update * save geolocation * added `CameraSettingsSection` * adjusted logbook grid * added hero animation * fixed logbook list updates * added empty logbook state * added `saveLogbookPhotos` option * fixed updating photos * made `DialogPicker` content scrollable * added tests for `LogbookPhotosProvider` * made image preview full-width * made note field multiline * wip * migrated to new iap service * fixed unit tests * typo * fixed arb formatting * stub logbook photos for tests * implemented integration test for logbook * moved date to title * redundant bottom padding * added logbook photo screen to screenshots generator * Update settings.gradle * aligned iap stub with iap release * sync * made logbook iap * debug screenshots * Update runner.dart * fixed dialog picker of optional values * added bottom padding to logbook edit screen * fixed tests * Create camera_stub_image.jpg * Update films_provider_test.dart * rename * Update pubspec.yaml * added logbook to pro features
63 lines
2.2 KiB
Dart
63 lines
2.2 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
|
import 'package:lightmeter/interactors/metering_interactor.dart';
|
|
import 'package:lightmeter/providers/logbook_photos_provider.dart';
|
|
import 'package:lightmeter/providers/services_provider.dart';
|
|
import 'package:lightmeter/screens/metering/bloc_metering.dart';
|
|
import 'package:lightmeter/screens/metering/communication/bloc_communication_metering.dart';
|
|
import 'package:lightmeter/screens/metering/screen_metering.dart';
|
|
import 'package:lightmeter/screens/metering/utils/notifier_volume_keys.dart';
|
|
|
|
class MeteringFlow extends StatefulWidget {
|
|
const MeteringFlow({super.key});
|
|
|
|
@override
|
|
State<MeteringFlow> createState() => _MeteringFlowState();
|
|
}
|
|
|
|
class _MeteringFlowState extends State<MeteringFlow> {
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return MeteringInteractorProvider(
|
|
data: MeteringInteractor(
|
|
ServicesProvider.of(context).userPreferencesService,
|
|
ServicesProvider.of(context).caffeineService,
|
|
ServicesProvider.of(context).hapticsService,
|
|
ServicesProvider.of(context).permissionsService,
|
|
ServicesProvider.of(context).lightSensorService,
|
|
ServicesProvider.of(context).volumeEventsService,
|
|
)..initialize(),
|
|
child: MultiBlocProvider(
|
|
providers: [
|
|
BlocProvider(create: (_) => MeteringCommunicationBloc()),
|
|
BlocProvider(
|
|
create: (context) => MeteringBloc(
|
|
MeteringInteractorProvider.of(context),
|
|
VolumeKeysNotifier(ServicesProvider.of(context).volumeEventsService),
|
|
context.read<MeteringCommunicationBloc>(),
|
|
LogbookPhotosProvider.of(context),
|
|
),
|
|
),
|
|
],
|
|
child: const MeteringScreen(),
|
|
),
|
|
);
|
|
}
|
|
}
|
|
|
|
class MeteringInteractorProvider extends InheritedWidget {
|
|
final MeteringInteractor data;
|
|
|
|
const MeteringInteractorProvider({
|
|
required this.data,
|
|
required super.child,
|
|
super.key,
|
|
});
|
|
|
|
static MeteringInteractor of(BuildContext context) {
|
|
return context.findAncestorWidgetOfExactType<MeteringInteractorProvider>()!.data;
|
|
}
|
|
|
|
@override
|
|
bool updateShouldNotify(MeteringInteractorProvider oldWidget) => false;
|
|
}
|