import 'dart:async'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:mofun_flutter_plugin_video/mofun_flutter_plugin_video.dart'; import 'package:mofun_flutter_plugin_video/mofun_video_view.dart'; void main() => runApp(MyApp()); class MyApp extends StatefulWidget { @override _MyAppState createState() => _MyAppState(); } class _MyAppState extends State { String _platformVersion = 'Unknown'; @override void initState() { super.initState(); initPlatformState(); } // Platform messages are asynchronous, so we initialize in an async method. Future initPlatformState() async { String platformVersion; // Platform messages may fail, so we use a try/catch PlatformException. try { platformVersion = await MofunFlutterPluginVideo.platformVersion; } on PlatformException { platformVersion = 'Failed to get platform version.'; } // If the widget was removed from the tree while the asynchronous platform // message was in flight, we want to discard the reply rather than calling // setState to update our non-existent appearance. if (!mounted) return; setState(() { _platformVersion = platformVersion; }); } @override Widget build(BuildContext context) { const String defaultUrl = 'rtmp://live.hkstv.hk.lxdns.com/live/hks1'; return MaterialApp( home: Scaffold( appBar: AppBar( title: const Text('Plugin example app'), ), body: Builder(builder: (context) { TextEditingController textEditingController = TextEditingController(text: defaultUrl); MofunVideoViewController controller; String url; return Column( children: [ Container( height: 400.0, child: MofunVideoView( onMofunVideoViewCreated: (c) { controller = c; c.toast('Mofun video!'); }, ), ), TextField( controller: textEditingController, onChanged: (s) => url = s), Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ RaisedButton( onPressed: () { controller?.play(url ?? defaultUrl); }, child: Text('Play'), ), RaisedButton( onPressed: () { controller?.stop(); }, child: Text('Stop'), ), RaisedButton( onPressed: () { controller?.toast('ζš‚δΈζ”―ζŒ'); }, child: Text('Save'), ), ], ), Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ RaisedButton( onPressed: () { controller?.record(); }, child: Text('Record'), ), RaisedButton( onPressed: () { controller?.playerAndResume(); }, child: Text('PlayerAndResume'), ), ], ), ], ); })), ); } }