flutter_readium 0.0.1 copy "flutter_readium: ^0.0.1" to clipboard
flutter_readium: ^0.0.1 copied to clipboard

Flutter plugin for reading EPUB, audiobook, and WebPub publications. Wraps the Readium toolkits on iOS, Android, and Web.

example/lib/main.dart

import 'package:flutter/foundation.dart';
import 'package:logging/logging.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_readium/flutter_readium.dart';
import 'package:hydrated_bloc/hydrated_bloc.dart';
import 'package:marionette_flutter/marionette_flutter.dart';
import 'package:marionette_logging/marionette_logging.dart';
import 'package:path_provider/path_provider.dart';

import 'pages/index.dart';
import 'state/index.dart';

Future<void> main() async {
  // Initialize Marionette only in debug mode
  if (kDebugMode) {
    MarionetteBinding.ensureInitialized(MarionetteConfiguration(logCollector: LoggingLogCollector()));
  } else {
    WidgetsFlutterBinding.ensureInitialized();
  }

  Logger.root.level = Level.ALL;
  Logger.root.onRecord.listen((record) {
    debugPrint('[${record.level.name}] ${record.loggerName}: ${record.message}');
  });

  HydratedBloc.storage = await HydratedStorage.build(
    storageDirectory: kIsWeb
        ? HydratedStorageDirectory.web
        : HydratedStorageDirectory((await getTemporaryDirectory()).path),
  );

  // Modify log level for the entire plugin here. The default is LogLevel.info.
  FlutterReadium().setLogLevel(LogLevel.debug);

  runApp(
    MultiBlocProvider(
      providers: [
        BlocProvider(create: (final _) => PublicationBloc(), lazy: false),
        BlocProvider(
          create: (final _) {
            final bloc = TextSettingsBloc();
            bloc.setDefaultPreferences();
            return bloc;
          },
        ),
        // BlocProvider(
        //   create: (final _) => TtsSettingsBloc(),
        //   lazy: false,
        // ),
        BlocProvider(create: (final _) => PlayerControlsBloc()),
        BlocProvider(create: (final _) => PDFSettingsBloc()),
      ],
      child: MyApp(),
    ),
  );
}

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

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

class _MyAppState extends State<MyApp> with RestorationMixin {
  @override
  String? get restorationId => 'root';

  @override
  void restoreState(RestorationBucket? oldBucket, bool initialRestore) {
    // Register any restorable properties here if needed
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      restorationScopeId: 'app',
      routes: {
        '/': (context) => BookshelfPage(),
        '/player': (context) => PlayerPage(),
        '/toc': (context) => TableOfContentsPage(),
        '/pagelist': (context) => PageListPage(),
        '/search': (context) => SearchPage(),
      },
    );
  }
}
0
likes
150
points
79
downloads

Documentation

API reference

Publisher

verified publisherkb.dk

Weekly Downloads

Flutter plugin for reading EPUB, audiobook, and WebPub publications. Wraps the Readium toolkits on iOS, Android, and Web.

Repository (GitHub)
View/report issues
Contributing

Topics

#readium #ebook #audiobook #comic #tts

License

BSD-3-Clause (license)

Dependencies

collection, flutter, flutter_readium_platform_interface, flutter_web_plugins, wakelock_plus, web

More

Packages that depend on flutter_readium

Packages that implement flutter_readium