barcode_scanner/lib/app.dart
2025-06-19 16:41:41 +03:00

67 lines
2.1 KiB
Dart

import 'package:barcode_scanner/router/router.dart';
import 'package:flutter/material.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:responsive_framework/responsive_framework.dart';
class App extends StatelessWidget {
const App({super.key});
@override
Widget build(BuildContext context) {
return ProviderScope(overrides: [routerProvider], child: _InnerApp());
}
}
class _InnerApp extends ConsumerWidget {
const _InnerApp();
@override
Widget build(BuildContext context, WidgetRef ref) {
return MaterialApp.router(
debugShowCheckedModeBanner: false,
title: "BarcodeScan",
theme: ThemeData(
fontFamily: 'Roboto',
scaffoldBackgroundColor: Colors.white,
primarySwatch: Colors.blue,
),
locale: Locale('fr'),
supportedLocales: [Locale('fr', 'FR'), Locale('en', 'US')],
localizationsDelegates: [
GlobalMaterialLocalizations.delegate, // Support for Material widgets
GlobalWidgetsLocalizations.delegate, // Localization for widgets
GlobalCupertinoLocalizations.delegate, // Support for Cupertino widgets
],
routerConfig: ref.watch(routerProvider),
builder: (context, widget) => ResponsiveBreakpoints.builder(
child: _ResponsiveWrapper(child: widget ?? const SizedBox.shrink()),
breakpoints: [
const Breakpoint(start: 0, end: 450, name: MOBILE),
const Breakpoint(start: 451, end: 800, name: TABLET),
],
),
);
}
}
class _ResponsiveWrapper extends StatelessWidget {
const _ResponsiveWrapper({required this.child});
final Widget child;
@override
Widget build(BuildContext context) {
return ResponsiveScaledBox(
width: ResponsiveValue<double?>(
context,
conditionalValues: [
const Condition.equals(name: MOBILE, value: 450),
const Condition.between(start: 800, end: 1100, value: 800),
const Condition.between(start: 1000, end: 1200, value: 1000),
],
).value,
child: child,
);
}
}