downloadTaskStateCallbackHandler method
void
downloadTaskStateCallbackHandler(
- MethodCall methodCall
)
Implementation
void downloadTaskStateCallbackHandler(MethodCall methodCall) {
bool keepAlive = methodCall.arguments["keepAlive"];
var state = methodCall.arguments["state"];
var task = methodCall.arguments["task"];
if (task == null) return;
String itemIdentifier = "";
if (task.containsKey("roomId") &&
int.parse(task["roomId"]) != 0 &&
task.containsKey("sessionId")) {
itemIdentifier = itemIdentifierWithClassIDSessionIDClipedVersion(
task["roomId"], task["sessionId"], -1);
} else if (task.containsKey("videoId")) {
itemIdentifier = itemIdentifierWithVideoID(task["videoId"]);
}
if (state == null) return;
String event = state["event"];
if (event == "onProgress") {
int downloadedLength = state["downloadedLength"].toInt();
int totalLength = state["totalLength"].toInt();
if (progressClosureTable[itemIdentifier] != null) {
progressClosureTable[itemIdentifier]!(downloadedLength, totalLength);
}
} else {
BJYDownloadTaskState stateEnum = BJYDownloadTaskState.Init;
switch (event) {
case "onStarted":
stateEnum = BJYDownloadTaskState.Started;
break;
case "onPaused":
stateEnum = BJYDownloadTaskState.Paused;
break;
case "onFinish":
stateEnum = BJYDownloadTaskState.Completed;
break;
}
if (stateClosureTable[itemIdentifier] != null) {
stateClosureTable[itemIdentifier]!(stateEnum, "");
}
}
if (!keepAlive) {
stateClosureTable.remove(itemIdentifier);
progressClosureTable.remove(itemIdentifier);
}
}