blob: 576260c0b7b85adfab45b64759842af7459e505d [file] [log] [blame]
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'camera_info.dart';
import 'camera_selector.dart';
import 'camerax_library.pigeon.dart';
import 'java_object.dart';
/// Handles initialization of Flutter APIs for the Android CameraX library.
class AndroidCameraXCameraFlutterApis {
/// Creates a [AndroidCameraXCameraFlutterApis].
AndroidCameraXCameraFlutterApis({
JavaObjectFlutterApiImpl? javaObjectFlutterApi,
CameraInfoFlutterApiImpl? cameraInfoFlutterApi,
CameraSelectorFlutterApiImpl? cameraSelectorFlutterApi,
}) {
this.javaObjectFlutterApi =
javaObjectFlutterApi ?? JavaObjectFlutterApiImpl();
this.cameraInfoFlutterApi =
cameraInfoFlutterApi ?? CameraInfoFlutterApiImpl();
this.cameraSelectorFlutterApi =
cameraSelectorFlutterApi ?? CameraSelectorFlutterApiImpl();
}
static bool _haveBeenSetUp = false;
/// Mutable instance containing all Flutter Apis for Android CameraX Camera.
///
/// This should only be changed for testing purposes.
static AndroidCameraXCameraFlutterApis instance =
AndroidCameraXCameraFlutterApis();
/// Handles callbacks methods for the native Java Object class.
late final JavaObjectFlutterApi javaObjectFlutterApi;
/// Flutter Api for [CameraInfo].
late final CameraInfoFlutterApiImpl cameraInfoFlutterApi;
/// Flutter Api for [CameraSelector].
late final CameraSelectorFlutterApiImpl cameraSelectorFlutterApi;
/// Ensures all the Flutter APIs have been setup to receive calls from native code.
void ensureSetUp() {
if (!_haveBeenSetUp) {
JavaObjectFlutterApi.setup(javaObjectFlutterApi);
CameraInfoFlutterApi.setup(cameraInfoFlutterApi);
CameraSelectorFlutterApi.setup(cameraSelectorFlutterApi);
_haveBeenSetUp = true;
}
}
}