logger_screen 0.0.3 copy "logger_screen: ^0.0.3" to clipboard
logger_screen: ^0.0.3 copied to clipboard

A Flutter package for displaying Logger logs with a user-friendly UI.

example/lib/main.dart

import 'dart:math';

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:logger/logger.dart';
import 'package:logger_screen/logger_screen.dart';

import 'color_schemes.dart';
import 'logger_screen_wrapper.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  Brightness _brightness =
      WidgetsBinding.instance.platformDispatcher.platformBrightness;

  @override
  void initState() {
    super.initState();
    WidgetsBinding.instance.platformDispatcher.onPlatformBrightnessChanged =
        () {
      WidgetsBinding.instance.handlePlatformBrightnessChanged();
      setState(() {
        _brightness =
            WidgetsBinding.instance.platformDispatcher.platformBrightness;
      });
    };
  }

  @override
  Widget build(BuildContext context) {
    final materialLightTheme =
        ThemeData(useMaterial3: true, colorScheme: lightColorScheme);
    final materialDarkTheme =
        ThemeData(useMaterial3: true, colorScheme: darkColorScheme);

    const darkDefaultCupertinoTheme =
        CupertinoThemeData(brightness: Brightness.dark);
    final cupertinoDarkTheme = MaterialBasedCupertinoThemeData(
      materialTheme: materialDarkTheme.copyWith(
        cupertinoOverrideTheme: CupertinoThemeData(
          brightness: Brightness.dark,
          barBackgroundColor: darkDefaultCupertinoTheme.barBackgroundColor,
          textTheme: CupertinoTextThemeData(
            primaryColor: Colors.white,
            navActionTextStyle:
                darkDefaultCupertinoTheme.textTheme.navActionTextStyle.copyWith(
              color: const Color(0xF0F9F9F9),
            ),
            navLargeTitleTextStyle: darkDefaultCupertinoTheme
                .textTheme.navLargeTitleTextStyle
                .copyWith(color: const Color(0xF0F9F9F9)),
          ),
        ),
      ),
    );
    final cupertinoLightTheme =
        MaterialBasedCupertinoThemeData(materialTheme: materialLightTheme);

    return MaterialApp(
      debugShowCheckedModeBanner: false,
      theme: ThemeData(useMaterial3: true, colorScheme: lightColorScheme),
      darkTheme: ThemeData(useMaterial3: true, colorScheme: darkColorScheme),
      themeMode: ThemeMode.system,
      home: CupertinoApp(
        debugShowCheckedModeBanner: false,
        theme: _brightness == Brightness.light
            ? cupertinoLightTheme
            : cupertinoDarkTheme,
        localizationsDelegates: const [
          DefaultMaterialLocalizations.delegate,
          DefaultCupertinoLocalizations.delegate,
          DefaultWidgetsLocalizations.delegate,
        ],
        home: const HomeScreen(),
      ),
    );
  }
}

class HomeScreen extends StatefulWidget {
  const HomeScreen({super.key});

  @override
  State<HomeScreen> createState() => _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen> {
  final printer = LoggerScreenPrinter(
    fileName: 'logs',
    encryptionKey: 'ThisIsAnExampleEncryptionKey123',
  );
  late Logger logger;
  bool _initialized = false;

  Future<void> _printRandomLogs(Logger logger) async {
    for (var count = 0; count < 10; count++) {
      final randomLevel =
          Log.usedLevelValues[Random().nextInt(Log.usedLevelValues.length)];
      final randomMessage = 'Random log #$count ${randomLevel.name}';
      logger.log(randomLevel, randomMessage);
      await Future.delayed(const Duration(seconds: 1));
    }
  }

  @override
  void initState() {
    super.initState();
    logger = Logger(printer: printer);
    if (!_initialized) {
      _printRandomLogs(logger);
    }
    _initialized = true;
  }

  @override
  Widget build(BuildContext context) {
    void openWithStyle(ScreenStyle screenStyle) {
      final page = LoggerScreenWrapper(
        screenStyle: screenStyle,
        printer: printer,
      );
      Navigator.push(
        context,
        screenStyle.isCupertino
            ? CupertinoPageRoute(builder: (context) => page)
            : MaterialPageRoute(builder: (context) => page),
      );
    }

    return Scaffold(
      body: SizedBox.expand(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          crossAxisAlignment: CrossAxisAlignment.center,
          children: [
            const Text('Open LoggerScreen with style: '),
            const SizedBox(height: 18),
            ElevatedButton(
              onPressed: () => openWithStyle(ScreenStyle.material),
              child: const Text('Material'),
            ),
            const SizedBox(height: 16),
            ElevatedButton(
              onPressed: () => openWithStyle(ScreenStyle.cupertino),
              child: const Text('Cupertino'),
            ),
            const SizedBox(height: 16),
            ElevatedButton(
              onPressed: () => openWithStyle(ScreenStyle.platform),
              child: const Text('Platform'),
            )
          ],
        ),
      ),
    );
  }
}
5
likes
130
pub points
65%
popularity

Publisher

verified publisheritisnajim.com

A Flutter package for displaying Logger logs with a user-friendly UI.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (LICENSE)

Dependencies

flutter, isar, isar_flutter_libs, logger, path_provider

More

Packages that depend on logger_screen