// Copyright 2014 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 'package:flutter/services.dart';

void main() {
  // Changes made in https://github.com/flutter/flutter/pull/60320
  final SurfaceAndroidViewController surfaceController = SurfaceAndroidViewController(
      viewId: 10,
      viewType: 'FixTester',
      layoutDirection: TextDirection.ltr,
  );
  int viewId = surfaceController.viewId;
  final SurfaceAndroidViewController surfaceController = SurfaceAndroidViewController(
    error: '',
  );
  final TextureAndroidViewController textureController = TextureAndroidViewController(
    error: '',
  );
  final TextureAndroidViewController textureController = TextureAndroidViewController(
    viewId: 10,
    viewType: 'FixTester',
    layoutDirection: TextDirection.ltr,
  );
  viewId = textureController.viewId;

  // Changes made in https://github.com/flutter/flutter/pull/81303
  await SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, overlays: <SystemUiOverlay>[SystemUiOverlay.top]);
  await SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, overlays: <SystemUiOverlay>[SystemUiOverlay.bottom]);
  await SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, overlays: <SystemUiOverlay>[SystemUiOverlay.top, SystemUiOverlay.bottom]);
  await SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, overlays: <SystemUiOverlay>[]);
  await SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, error: '');
}
