rerune_flutter_ota 0.0.2 copy "rerune_flutter_ota: ^0.0.2" to clipboard
rerune_flutter_ota: ^0.0.2 copied to clipboard

OTA localization updates for Flutter apps using ARB manifests.

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:rerune_flutter_ota/rerune_flutter_ota.dart';

import 'l10n/gen/app_localizations.dart';
import 'l10n/gen/rerune_app_localizations.dart';

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

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

  @override
  State<OtaExampleApp> createState() => _OtaExampleAppState();
}

class _OtaExampleAppState extends State<OtaExampleApp> {
  late final OtaLocalizationController _controller;

  @override
  void initState() {
    super.initState();
    _controller = OtaLocalizationController(
      supportedLocales: const [
        Locale('de'),
        Locale('en'),
        Locale('it'),
        Locale('pt'),
      ],
      updatePolicy: const OtaUpdatePolicy(
        checkOnStart: true,
        periodicInterval: Duration(seconds: 10),
      ),
    );
    _controller.initialize();
  }

  @override
  void dispose() {
    _controller.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return OtaTypedLocalizationBuilder<AppLocalizations>(
      controller: _controller,
      delegateFactory: (context, controller, revision) {
        return ReruneAppLocalizationsDelegate(
          controller: controller,
          revision: revision,
        );
      },
      builder: (context, delegate) {
        return MaterialApp(
          title: 'Rerune OTA',
          localizationsDelegates:
              ReruneAppLocalizationsSetup.localizationsDelegates(delegate),
          supportedLocales: ReruneAppLocalizationsSetup.supportedLocales,
          home: ExampleHome(controller: _controller),
        );
      },
    );
  }
}

class ExampleHome extends StatelessWidget {
  const ExampleHome({super.key, required this.controller});

  final OtaLocalizationController controller;

  @override
  Widget build(BuildContext context) {
    final t = AppLocalizations.of(context)!;
    return Scaffold(
      appBar: AppBar(title: Text(t.title)),
      body: Padding(
        padding: const EdgeInsets.all(24),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            Text(t.body, style: Theme.of(context).textTheme.titleMedium),
            const SizedBox(height: 20),
            FilledButton(
              onPressed: () async {
                await controller.checkForUpdates();
              },
              child: Text(t.button),
            ),
          ],
        ),
      ),
    );
  }
}
2
likes
150
points
111
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

OTA localization updates for Flutter apps using ARB manifests.

Homepage
Repository (GitHub)
View/report issues

Topics

#ota #translations #rerune #localization

License

MIT (license)

Dependencies

crypto, flutter, http, intl, path_provider, shared_preferences

More

Packages that depend on rerune_flutter_ota