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

outdated

Tivio Flutter SDK

Tivio Flutter SDK #

Data for widget #

Example #

import 'package:sdk_flutter/tivio.dart';

class App {
  Tivio _tivio;

  init () async {
    _tivio = await initTivio('7ed6d7da-2bf1-4fa9-b212-4f9caf55f901');
  }

  run () async {
    var widget = await _tivio.getWidget('Homepage');

    var channels = await widget.getChannels();

    channels.records.forEach((channel) async {
        var sections = await channel.getSections();

        sections.records.forEach((section) async {
            bool hasNextPage = true;
            do {
                var videos = await section.getVideos();

                videos.records.forEach((video) async {
                    print(video.name);
                    print(video.url.hls);
                    print(video.images.cover);
                });

                hasNextPage = videos.hasNextPage;
            } while (hasNextPage);
        });
    });
  }
}

Api #

Init

  • The init method is called with parameter secret that is generated in administration and identifies the application.
  • Init returns a Tivio instance.
class InitTivio {
  static Future<Tivio> init (String secret) {}
}

class Tivio {
  Future<TivioDataWidget> getWidget (String widgetId) {}
}

Pagination

  • Result of methods that can return a larger amount of data is wrapped in the Pagination object.
  • To get all records iterate until the hasNextPage is true.
  • Called method can have a count parameter to change the number of returned records.
class TivioDataPagination<T> {
  List<T> records;
  bool hasNextPage;
}

Widget

  • A widget holds together multiple channels with some specific configuration.
class TivioDataWidget {
  String id;
  String name;

  Future<Pagination<TivioDataChannel>> getChannels ({int count = 10}) {}
}

Channel

class _ChannelImages {
  String logo;
  String cover;
}

class TivioDataChannel {
  String id;
  String name;
  _ChannelImages images;

  Future<Pagination<TivioDataSection>> getSections ({int count = 10}) {}
}

Section

  • The Section is a container for multiple videos.
class TivioDataSection {
  String id;
  String name;

  Future<Pagination<TivioDataVideo>> getVideos ({int count = 10}) {}
}

Video

class _Url {
  String hls;
}

class _VideoImages {
  String cover;
}

class TivioDataVideo {
  String id;
  String name;
  Duration duration;
  DateTime created;
  _Url url;
  _VideoImages images;
}

Video player #

Example #

import 'package:sdk_flutter/tivio.dart';
import 'package:sdk_flutter/player/tivio_player.dart';
import 'package:sdk_flutter/player/tivio_player_controller.dart';
import 'package:sdk_flutter/player/tivio_player_input_source.dart';

class App extends StatefulWidget {
  @override
  _AppState createState() => __AppState();
}

class _AppState extends State<App> {
    bool _isTivioInitialized = false;
    Tivio _tivio;
    TivioPlayerController _tivioPlayerController;

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

    initializeTivio() async {
        _tivio = await initTivio('7ed6d7da-2bf1-4fa9-b212-4f9caf55f901');
        _tivioPlayerController = TivioPlayerController();

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

    @override
    Widget build(BuildContext context) {
        return (_isTivioInitialized)
            ? Column(
            children: [
                TivioPlayer(
                    'MainPlayer',
                    _tivio,
                    _tivioPlayerController,
                ),
                Column(
                    children: [
                        TextButton(
                            onPressed: () {
                                _tivioPlayerController.openAndPlay(
                                    TivioPlayerChannelSource(
                                        'http://97enqyxqog4j-hls-push.5centscdn.com/raw/FSvkmgFHhErJdW2bCEB3/OKTAGON 21_ Peňáz vs. Debienne.mp4/playlist.m3u8',
                                        'Peňáz vs. Debienne',
                                        Duration(),
                                        Duration(milliseconds: 1200080),
                                    ),
                                );
                            },
                            child: Text('Peňáz vs. Debienne'),
                        ),
                        TextButton(
                            onPressed: () {
                                _tivioPlayerController.openAndPlay(
                                    TivioPlayerChannelSource(
                                        'http://97enqyxqog4j-hls-push.5centscdn.com/raw/KKvBRE2wEJu4Nfugc2Y3/OKTAGON 21_ Szabová vs. Zouak.mp4/playlist.m3u8',
                                        'Szabová vs. Zouak',
                                        Duration(),
                                        Duration(milliseconds: 1460400),
                                    ),
                                );
                            },
                            child: Text('Szabová vs. Zouak'),
                        ),
                    ],
                )
            ],
        )
            : Text('...');
    }
}

Api #

TivioPlayer

class TivioPlayer {
    TivioPlayer(String playerId, Tivio tivio, TivioPlayerController controller);
}

TivioPlayerChannelSource

class TivioPlayerChannelSource {
    final String uri;
    final String name;
    final Duration from;
    final Duration to;
}

TivioPlayerController

class TivioPlayerController {
    void openAndPlay (TivioPlayerChannelSource source) {}
}