Skip to content

Commit 112086d

Browse files
committed
Merge remote-tracking branch 'origin/dev'
2 parents 30be7c2 + c07f777 commit 112086d

File tree

5 files changed

+42
-9
lines changed

5 files changed

+42
-9
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
## v1.3.1
2+
3+
### Fixes
4+
* Fix the issue in fetching available animations and textures in iOS
5+
16
## v1.3.0
27

38
### Features

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ Flutter3DViewer(
104104

105105
```yaml
106106
dependencies:
107-
flutter_3d_controller: ^1.3.0
107+
flutter_3d_controller: ^1.3.1
108108
```
109109
110110
### `AndroidManifest.xml` (Android 9+ only)

example/pubspec.lock

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ packages:
7676
path: ".."
7777
relative: true
7878
source: path
79-
version: "1.3.0"
79+
version: "1.3.1"
8080
flutter_lints:
8181
dependency: "direct dev"
8282
description:

lib/src/data/datasources/flutter_3d_datasource_mobile.dart

Lines changed: 34 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import 'package:webview_flutter/webview_flutter.dart';
44

55
class Flutter3DDatasource implements IFlutter3DDatasource {
66
final WebViewController? _webViewController;
7+
78
Flutter3DDatasource([this._webViewController]);
89

910
@override
@@ -38,9 +39,13 @@ class Flutter3DDatasource implements IFlutter3DDatasource {
3839
Future<List<String>> getAvailableAnimations() async {
3940
final result = await executeCustomJsCodeWithResult(
4041
"document.querySelector(\"model-viewer\").availableAnimations;");
41-
return jsonDecode(result as String)
42-
.map<String>((e) => e.toString())
43-
.toList();
42+
String checkedResult;
43+
if (result is String) {
44+
checkedResult = _tupleToList(result);
45+
} else {
46+
return [];
47+
}
48+
return jsonDecode(checkedResult).map<String>((e) => e.toString()).toList();
4449
}
4550

4651
@override
@@ -54,9 +59,13 @@ class Flutter3DDatasource implements IFlutter3DDatasource {
5459
Future<List<String>> getAvailableTextures() async {
5560
final result = await executeCustomJsCodeWithResult(
5661
"document.querySelector(\"model-viewer\").availableVariants;");
57-
return jsonDecode(result as String)
58-
.map<String>((e) => e.toString())
59-
.toList();
62+
String checkedResult;
63+
if (result is String) {
64+
checkedResult = _tupleToList(result);
65+
} else {
66+
return [];
67+
}
68+
return jsonDecode(checkedResult).map<String>((e) => e.toString()).toList();
6069
}
6170

6271
@override
@@ -100,4 +109,23 @@ class Flutter3DDatasource implements IFlutter3DDatasource {
100109
final result = await _webViewController?.runJavaScriptReturningResult(code);
101110
return result;
102111
}
112+
113+
/*
114+
* Converts Tuple string to List
115+
* */
116+
String _tupleToList(String input) {
117+
String trimmedString = input.trim();
118+
if (trimmedString.isNotEmpty && trimmedString.length > 2) {
119+
if (trimmedString[0] == "(") {
120+
trimmedString = trimmedString.replaceFirst("(", "[");
121+
}
122+
if (trimmedString[trimmedString.length - 1] == ")") {
123+
trimmedString =
124+
trimmedString.substring(0, trimmedString.length - 2) + "]";
125+
}
126+
return trimmedString;
127+
} else {
128+
return "[]";
129+
}
130+
}
103131
}

pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: flutter_3d_controller
22
description: A Flutter package for rendering interactive 3D models in different formats(glb, gltf, fbx, obj), with ability to control animations, textures and camera.
3-
version: 1.3.0
3+
version: 1.3.1
44
homepage: https://github.com/m-r-davari/flutter_3d_controller
55

66
topics:

0 commit comments

Comments
 (0)