Files
cup_edit/lib/view/filament_view.dart
2022-01-30 15:59:39 +08:00

62 lines
2.1 KiB
Dart

import 'package:flutter/foundation.dart';
import 'package:flutter/gestures.dart';
import 'package:flutter/rendering.dart';
import 'package:flutter/services.dart';
import 'package:flutter/widgets.dart';
import '../../filament_controller.dart';
import 'filament_view_platform.dart';
class FilamentView extends FilamentViewPlatform {
static const FILAMENT_VIEW_ID = 'app.polyvox.filament/filament_view';
@override
Widget buildView(
int creationId,
FilamentViewCreatedCallback onFilamentViewCreated,
) {
switch (defaultTargetPlatform) {
case TargetPlatform.android:
return PlatformViewLink(
viewType: FILAMENT_VIEW_ID,
surfaceFactory:
(BuildContext context, PlatformViewController controller) {
return AndroidViewSurface(
controller: controller as AndroidViewController,
gestureRecognizers: const <
Factory<OneSequenceGestureRecognizer>>{},
hitTestBehavior: PlatformViewHitTestBehavior.opaque,
);
},
onCreatePlatformView: (PlatformViewCreationParams params) {
return PlatformViewsService.initSurfaceAndroidView(
id: params.id,
viewType: FILAMENT_VIEW_ID,
layoutDirection: TextDirection.ltr,
creationParams: {},
creationParamsCodec: StandardMessageCodec(),
)
..addOnPlatformViewCreatedListener((int id) {
onFilamentViewCreated(id);
params.onPlatformViewCreated(id);
})
..create();
},
);
case TargetPlatform.iOS:
return UiKitView(
viewType: FILAMENT_VIEW_ID,
onPlatformViewCreated: (int id) {
onFilamentViewCreated(id);
},
);
case TargetPlatform.windows:
return Text(
"Flutter doesn't support platform view on Windows yet.");
default:
return Text(
'$defaultTargetPlatform is not yet implemented by Filament plugin.');
}
}
}