openPopup static method

Future<WindowHandleImpl> openPopup(
  1. String url, {
  2. Map<String, dynamic> parameters = const {},
})

Opens a new popup window at the url page.

Implementation

static Future<WindowHandleImpl> openPopup(
  String url, {
  Map<String, dynamic> parameters = const {},
}) async {
  Log.debug('openPopup($url, $parameters)', 'WebUtils');

  final String id = parameters['id'] = const Uuid().v4();

  final StringBuffer arguments = StringBuffer();
  if (parameters.isNotEmpty) {
    arguments.write('?');
    arguments.write(
      parameters.entries.map((e) => '${e.key}=${e.value}').join('&'),
    );
  }

  final WindowHandleImpl handle = WindowHandleImpl(
    '$url${arguments.toString()}',
    id: id,
  );

  try {
    final int screenW = web.window.screen.width;
    final int screenH = web.window.screen.height;

    final int sizeW = 500;
    final int sizeH = 800;

    handle._window = web.window.open(
      '$url${arguments.toString()}',
      handle.id,
      'popup=1,width=$sizeW,height=$sizeH,left=${(screenW / 2 - sizeW / 2).toInt()},top=${(screenH / 2 - sizeH / 2).toInt()}',
    );

    Log.debug('openPopup() -> isOpen: ${handle.isOpen}', 'WebUtils');
  } catch (e) {
    Log.debug('openPopup() -> failed due to $e', 'WebUtils');
  }

  return handle;
}