tivio_sdk 0.0.1 tivio_sdk: ^0.0.1 copied to clipboard
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) {}
}