tivio_sdk 0.0.3 tivio_sdk: ^0.0.3 copied to clipboard
Tivio Flutter SDK
Tivio Flutter SDK #
Initialize Tivio #
- The init method is called with parameter
secret
that is generated in administration and identifies the application. - Init returns a Tivio instance.
import 'package:tivio_sdk/tivio.dart';
class App {
Tivio _tivio;
init () async {
_tivio = await initTivio('a18b5f9e-4eb3-4bdb-a69b-660f1cd0d9b9');
}
}
Reactive data #
- Widget can be extended with one or more mixins
TivioWidgets|TivioChannels|TivioSections|TivioVideos
. - After initialization mixin starts to propagate data into state.
TivioWidgets #
- Initialize by
initializeTivioWidgets
with an instance ofTivio
. - Data are in
tivioWidgets
attribute.
class _CustomWidgetState extends State<CustomWidget> with TivioWidgets {
@override
void initState() {
super.initState();
initializeTivioWidgets(this.widget._tivio);
}
@override
Widget build(BuildContext context) {
return Column(
children: [
...tivioWidgets.entries.map((e) => Text(e.value.name)).toList(),
]
);
}
}
TivioDataWidget
can be also pulled directly fromTivio
by id.
class _CustomWidgetState extends State<CustomWidget> {
@override
void initState() {
super.initState();
startFetchingWidgets();
}
startFetchingWidgets() async {
tivioWidget = await _tivio.getWidget('Homepage');
tivioWidget.subscribeToChannels((channel) {
print('new channel');
print(channel);
});
}
}
TivioChannels #
- Initialize by
initializeTivioChannels
with an instance ofTivioDataWidget
. - Data are in
tivioChannels
attribute.
class _CustomWidgetState extends State<CustomWidget> with TivioChannels {
@override
void initState() {
super.initState();
initializeTivioChannels(this.widget._tivioDataWidget);
}
@override
Widget build(BuildContext context) {
return Column(
children: [
...tivioChannels.entries.map((e) => Text(e.value.name)).toList(),
]
);
}
}
TivioSections #
- Initialize by
initializeTivioSections
with an instance ofTivioDataChannel
. - Data are in
tivioSections
attribute.
class _CustomWidgetState extends State<CustomWidget> with TivioSections {
@override
void initState() {
super.initState();
initializeTivioSections(this.widget._tivioDataChannel);
}
@override
Widget build(BuildContext context) {
return Column(
children: [
...tivioSections.entries.map((e) => Text(e.value.name)).toList(),
]
);
}
}
TivioVideos #
- Initialize by
initializeTivioVideos
with an instance ofTivioDataSection
. - Data are in
tivioVideos
attribute.
class _CustomWidgetState extends State<CustomWidget> with TivioVideos {
@override
void initState() {
super.initState();
initializeTivioVideos(this.widget._tivioDataSection);
}
@override
Widget build(BuildContext context) {
return Column(
children: [
...tivioVideos.entries.map((e) => Text(e.value.name)).toList(),
]
);
}
}
DTO #
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;
subscribeToChannels(Function(TivioDataChannel) callback) {}
unsubscribeToChannels() {}
}
Channel #
- The Channel is a container for multiple sections.
class _ChannelImages {
String logo;
String cover;
}
class TivioDataChannel {
String id;
String name;
_ChannelImages images;
subscribeToSections(Function(TivioDataSection) callback) {}
unsubscribeToSections() {}
}
Section #
- The Section is a container for multiple videos.
class TivioDataSection {
String id;
String name;
subscribeToVideos(Function(TivioDataVideo) callback) {}
unsubscribeToVideos() {}
}
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 #
Declarative api #
import 'package:tivio_sdk/tivio.dart';
class App extends StatefulWidget {
@override
_AppState createState() => __AppState();
}
class _AppState extends State<App> {
bool _isTivioInitialized = false;
Tivio _tivio;
@override
void initState() {
super.initState();
initializeTivio();
}
initializeTivio() async {
_tivio = await initTivio('a18b5f9e-4eb3-4bdb-a69b-660f1cd0d9b9');
setState(() {
_isTivioInitialized = true;
});
}
@override
Widget build(BuildContext context) {
return (_isTivioInitialized)
? Column(
children: [
TivioPlayer(
playerId: 'MainPlayer',
tivio: _tivio,
source: TivioPlayerChannelSource(
'https://cdn1.tiv.io/raw/xxW7ifg8dbNM17tgcwmp/Ďatelinka%20vs.%20Hošek.mp4/playlist.m3u8',
'Ďatelinka vs. Hošek',
Duration(),
Duration(milliseconds: 1200080),
),
),
],
)
: Text('...');
}
}
Imperative api #
import 'package:tivio_sdk/tivio.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('a18b5f9e-4eb3-4bdb-a69b-660f1cd0d9b9');
_tivioPlayerController = TivioPlayerController();
setState(() {
_isTivioInitialized = true;
});
}
@override
Widget build(BuildContext context) {
return (_isTivioInitialized)
? Column(
children: [
TivioPlayer(
playerId: 'MainPlayer',
tivio: _tivio,
controller: _tivioPlayerController,
),
Column(
children: [
TextButton(
onPressed: () {
_tivioPlayerController.openAndPlay(
TivioPlayerChannelSource(
'https://cdn1.tiv.io/raw/xxW7ifg8dbNM17tgcwmp/Ďatelinka%20vs.%20Hošek.mp4/playlist.m3u8',
'Ďatelinka vs. Hošek',
Duration(),
Duration(milliseconds: 1200080),
),
);
},
child: Text('Peňáz vs. Debienne'),
),
TextButton(
onPressed: () {
_tivioPlayerController.openAndPlay(
TivioPlayerChannelSource(
'https://cdn1.tiv.io/raw/q4LDHFNA0iiU9YAh8tPk/OKTAGON 19_ Vémola vs. Mikulášek.mp4/playlist.m3u8',
'OKTAGON 19 Vémola vs Mikulášek',
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) {}
}