@@ -6,19 +6,23 @@ import 'package:webview_flutter/webview_flutter.dart';
6
6
class Flutter3DDatasource implements IFlutter3DDatasource {
7
7
final WebViewController ? _webViewController;
8
8
final bool _activeGestureInterceptor;
9
+ final String _viewerId;
9
10
10
11
Flutter3DDatasource (
11
- [this ._webViewController, this ._activeGestureInterceptor = false ]);
12
+ this ._viewerId, [
13
+ this ._webViewController,
14
+ this ._activeGestureInterceptor = false ,
15
+ ]);
12
16
13
17
@override
14
18
void playAnimation ({String ? animationName}) {
15
19
animationName == null
16
20
? executeCustomJsCode (
17
- "const modelViewer = document.querySelector (\" model-viewer \" );"
21
+ "const modelViewer = document.getElementById (\" $ _viewerId \" );"
18
22
"modelViewer.play();" ,
19
23
)
20
24
: executeCustomJsCode (
21
- "const modelViewer = document.querySelector (\" model-viewer \" );"
25
+ "const modelViewer = document.getElementById (\" $ _viewerId \" );"
22
26
"modelViewer.animationName = \" $animationName \" ;"
23
27
"modelViewer.play();" ,
24
28
);
@@ -27,15 +31,15 @@ class Flutter3DDatasource implements IFlutter3DDatasource {
27
31
@override
28
32
void pauseAnimation () {
29
33
executeCustomJsCode (
30
- "const modelViewer = document.querySelector (\" model-viewer \" );"
34
+ "const modelViewer = document.getElementById (\" $ _viewerId \" );"
31
35
"modelViewer.pause();" ,
32
36
);
33
37
}
34
38
35
39
@override
36
40
void resetAnimation () {
37
41
executeCustomJsCode (
38
- "const modelViewer = document.querySelector (\" model-viewer \" );"
42
+ "const modelViewer = document.getElementById (\" $ _viewerId \" );"
39
43
"modelViewer.pause();"
40
44
"modelViewer.currentTime = 0;"
41
45
"modelViewer.play();" ,
@@ -45,7 +49,7 @@ class Flutter3DDatasource implements IFlutter3DDatasource {
45
49
@override
46
50
void stopAnimation () {
47
51
executeCustomJsCode (
48
- "const modelViewer = document.querySelector (\" model-viewer \" );"
52
+ "const modelViewer = document.getElementById (\" $ _viewerId \" );"
49
53
"modelViewer.pause();"
50
54
"modelViewer.currentTime = 0;" ,
51
55
);
@@ -55,7 +59,7 @@ class Flutter3DDatasource implements IFlutter3DDatasource {
55
59
Future <List <String >> getAvailableAnimations () async {
56
60
try {
57
61
final result = await executeCustomJsCodeWithResult (
58
- "document.querySelector (\" model-viewer \" ).availableAnimations;" ,
62
+ "document.getElementById (\" $ _viewerId \" ).availableAnimations;" ,
59
63
);
60
64
String checkedResult;
61
65
if (result is String ) {
@@ -75,15 +79,15 @@ class Flutter3DDatasource implements IFlutter3DDatasource {
75
79
@override
76
80
void setTexture ({required String textureName}) {
77
81
executeCustomJsCode (
78
- "const modelViewer = document.querySelector (\" model-viewer \" );"
82
+ "const modelViewer = document.getElementById (\" $ _viewerId \" );"
79
83
"modelViewer.variantName = \" $textureName \" ;" ,
80
84
);
81
85
}
82
86
83
87
@override
84
88
Future <List <String >> getAvailableTextures () async {
85
89
final result = await executeCustomJsCodeWithResult (
86
- "document.querySelector (\" model-viewer \" ).availableVariants;" ,
90
+ "document.getElementById (\" $ _viewerId \" ).availableVariants;" ,
87
91
);
88
92
String checkedResult;
89
93
if (result is String ) {
@@ -97,7 +101,7 @@ class Flutter3DDatasource implements IFlutter3DDatasource {
97
101
@override
98
102
void setCameraTarget (double x, double y, double z) {
99
103
executeCustomJsCode (
100
- "const modelViewer = document.querySelector (\" model-viewer \" );"
104
+ "const modelViewer = document.getElementById (\" $ _viewerId \" );"
101
105
"modelViewer.cameraTarget = \" ${x }m ${y }m ${z }m\" ;" ,
102
106
100 ,
103
107
300 ,
@@ -108,7 +112,7 @@ class Flutter3DDatasource implements IFlutter3DDatasource {
108
112
@override
109
113
void resetCameraTarget () {
110
114
executeCustomJsCode (
111
- "const modelViewer = document.querySelector (\" model-viewer \" );"
115
+ "const modelViewer = document.getElementById (\" $ _viewerId \" );"
112
116
"modelViewer.cameraTarget = \" auto auto auto\" ;" ,
113
117
100 ,
114
118
300 ,
@@ -119,7 +123,7 @@ class Flutter3DDatasource implements IFlutter3DDatasource {
119
123
@override
120
124
void setCameraOrbit (double theta, double phi, double radius) {
121
125
executeCustomJsCode (
122
- "const modelViewer = document.querySelector (\" model-viewer \" );"
126
+ "const modelViewer = document.getElementById (\" $ _viewerId \" );"
123
127
"modelViewer.cameraOrbit = \" ${theta }deg ${phi }deg $radius %\" ;" ,
124
128
100 ,
125
129
400 ,
@@ -130,7 +134,7 @@ class Flutter3DDatasource implements IFlutter3DDatasource {
130
134
@override
131
135
void resetCameraOrbit () {
132
136
executeCustomJsCode (
133
- "const modelViewer = document.querySelector (\" model-viewer \" );"
137
+ "const modelViewer = document.getElementById (\" $ _viewerId \" );"
134
138
"modelViewer.cameraOrbit = \" 0deg 75deg 105%\" ;" ,
135
139
100 ,
136
140
400 ,
0 commit comments