controller.dart 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. part of './ijkplayer.dart';
  2. class IjkController extends ChangeNotifier {
  3. int textureId;
  4. bool get isInit => textureId == null;
  5. Future initIjk() async {
  6. try {
  7. var id = await _IjkPlugin.createIjk();
  8. this.textureId = id;
  9. } catch (e) {
  10. print(e);
  11. print("初始化失败");
  12. }
  13. }
  14. void dispose() {
  15. super.dispose();
  16. var id = textureId;
  17. this.textureId = null;
  18. _IjkPlugin.dispose(id);
  19. }
  20. Future setData(String url) async {
  21. await _IjkPlugin.setData(id: this.textureId, uri: url);
  22. }
  23. Future setNetData(String uri) async {
  24. await _IjkPlugin.setNetData(id: this.textureId, uri: uri);
  25. }
  26. Future play() async {
  27. await _IjkPlugin.play(this.textureId);
  28. this.notifyListeners();
  29. }
  30. }
  31. class _IjkPlugin {
  32. static MethodChannel channel = MethodChannel("top.kikt/ijkplayer");
  33. static Future<int> createIjk() async {
  34. int id = await channel.invokeMethod("create");
  35. return id;
  36. }
  37. static Future dispose(int id) async {
  38. channel.invokeMethod("dispose", id);
  39. }
  40. static Future play(int id) async {
  41. await channel.invokeMethod("play", id);
  42. }
  43. static Future pause(int id) async {
  44. channel.invokeMethod("pause", id);
  45. }
  46. static Future stop(int id) async {
  47. channel.invokeMethod("stop", id);
  48. }
  49. static Future setData({int id, String uri}) async {
  50. print("id = $id , uri = $uri");
  51. channel.invokeMethod("setData", {"id": id, "uri": uri});
  52. }
  53. static Future setNetData({int id, String uri}) async {
  54. print("id = $id , uri = $uri");
  55. channel.invokeMethod("setNetData", {"id": id, "uri": uri});
  56. }
  57. }