setIcon method

Future<void> setIcon(
  1. String iconPath, {
  2. bool isTemplate = false,
  3. TrayIconPosition iconPosition = TrayIconPosition.left,
  4. int iconSize = 18,
})

Implementation

Future<void> setIcon(
  String iconPath, {
  bool isTemplate = false,
  TrayIconPosition iconPosition = TrayIconPosition.left,
  int iconSize = 18,
}) async {
  final icon = iconPath.startsWith('data:image/')
      ? nativeapi.Image.fromBase64(iconPath)
      : nativeapi.ImageAsset.fromAsset(iconPath) ??
            nativeapi.Image.fromFile(iconPath) ??
            _fromLinuxIconName(iconPath);
  if (icon == null) {
    throw ArgumentError.value(
      iconPath,
      'iconPath',
      'Unable to load tray icon',
    );
  }

  // macOS only, as before; the other platforms record the values.
  _ensureTrayIcon
    ..isIconTemplate = isTemplate
    ..iconSize = Size.square(iconSize.toDouble())
    ..iconPosition = _nativePosition(iconPosition)
    ..icon = icon
    ..setVisible(true);
  _icon?.dispose();
  _icon = icon;
}