tivio_sdk 1.7.6 copy "tivio_sdk: ^1.7.6" to clipboard
tivio_sdk: ^1.7.6 copied to clipboard

Tivio Flutter SDK

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:nav_router/nav_router.dart';
import 'package:tivio_sdk/tivio.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter_dotenv/flutter_dotenv.dart';
import 'pages/player_ui/player_ui_index.dart';
import 'pages/player_with_tivio_integration/player_with_tivio_integration_index.dart';
import 'pages/content_page/tivio_channels_widget.dart';
import 'pages/__internal/better_player_fullscreen_issue.dart';
import 'pages/__internal/screens_page.dart';

Future<void> main() async {
  await DotEnv().load('local.env');
  runApp(ExampleApp());
}

class ExampleApp extends StatefulWidget {
  @override
  _ExampleAppState createState() => _ExampleAppState();
}

class _ExampleAppState extends State<ExampleApp> {
  bool _isTivioInitialized = false;
  Tivio _tivio;

  @override
  void initState() {
    super.initState();
    initializeTivio();
  }

  initializeTivio() async {
    if (DotEnv().env['TIVIO_SECRET'] == null || DotEnv().env['TIVIO_SECRET'].isEmpty) {
      throw Exception('Copy .env to local.env and add your TIVIO_SECRET to it');
    }

    _tivio = await initTivio(
      secret: DotEnv().env['TIVIO_SECRET'],
      language: TivioLanguages.cs,
      logLevel: TivioLogLevels.verbose,
      development: (DotEnv().env['INTERNAL_DEVELOPMENT'] == 'true'),
    );

    setState(() {
      _isTivioInitialized = true;
    });
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Tivio SDK examples',
      theme: ThemeData(
        primarySwatch: Colors.blue,
        visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      home: Scaffold(
        appBar: AppBar(
          title: Text('Tivio SDK examples'),
        ),
        body: (_isTivioInitialized)
            ? Flex(
                direction: Axis.vertical,
                crossAxisAlignment: CrossAxisAlignment.start,
                children: [
                  TextButton(
                    onPressed: () => _navigateToPage(PlayerUiIndex()),
                    child: Text('Player Ui'),
                  ),
                  TextButton(
                    onPressed: () => _navigateToPage(PlayerWithTivioIntegrationIndex(
                      tivio: _tivio,
                    )),
                    child: Text('Player with tivio integration'),
                  ),
                  TextButton(
                    onPressed: () => _navigateToPage(TivioChannelsWidget(_tivio, DotEnv().env['TIVIO_DEMO_WIDGET_ID'])),
                    child: Text('Content page'),
                  ),
                  TextButton(
                    onPressed: () => _navigateToPage(ScreensPage(_tivio)),
                    child: Text('Screens test page'),
                  ),
                  ...(DotEnv().env['INTERNAL_DEVELOPMENT'] == 'true')
                      ? [
                          TextButton(
                            onPressed: () => _navigateToPage(BetterPlayerFullscreenIssue()),
                            child: Text('BetterPlayer fullscreen issue'),
                          ),
                        ]
                      : [],
                ],
              )
            : Text('initializing tivio'),
      ),
      navigatorKey: navGK,
    );
  }

  _navigateToPage(Widget page) {
    return routePush(page, RouterType.material);
  }
}