Skip to content

Commit 26127eb

Browse files
committed
Guard prints, fix pointer access, adjust color
Wrap debug prints with kDebugMode (imported from flutter/foundation) in EventEmitter, Menu, and TrayIcon so logging only occurs in debug builds; add an ignore_for_file for prints in the example. Fix FFI pointer indexing in Preferences and SecureStorage by using pointer arithmetic ((keysPtr.value + i).value) instead of elementAt. Adjust Window.backgroundColor conversion to compute RGBA from normalized components (r/g/b/a * 255) with rounding and clamping. Also remove the default visual-effect fallback mapping.
1 parent 0abaf7e commit 26127eb

7 files changed

Lines changed: 40 additions & 18 deletions

File tree

packages/nativeapi/example/lib/main.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
// ignore_for_file: avoid_print
2+
13
import 'package:flutter/material.dart';
24
import 'package:nativeapi/nativeapi.dart';
35

packages/nativeapi/lib/src/foundation/event_emitter.dart

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import 'dart:async';
22

3+
import 'package:flutter/foundation.dart' show kDebugMode;
34
import 'package:meta/meta.dart';
45

56
import 'event.dart';
@@ -172,7 +173,9 @@ mixin EventEmitter {
172173
listener.onEvent(event);
173174
} catch (e) {
174175
// Log error but continue with other listeners
175-
print('Error in event listener: $e');
176+
if (kDebugMode) {
177+
print('Error in event listener: $e');
178+
}
176179
}
177180
}
178181
}

packages/nativeapi/lib/src/menu.dart

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import 'dart:ffi';
22

33
import 'package:ffi/ffi.dart' as ffi;
4+
import 'package:flutter/foundation.dart' show kDebugMode;
45
import 'package:nativeapi/src/foundation/cnativeapi_bindings_mixin.dart';
56
import 'package:nativeapi/src/foundation/event_emitter.dart';
67
import 'package:nativeapi/src/foundation/native_handle_wrapper.dart';
@@ -176,7 +177,9 @@ class MenuItem
176177
) {
177178
final instance = _instances[userData.address];
178179
if (instance != null) {
179-
print('Menu item clicked: ${instance.id}');
180+
if (kDebugMode) {
181+
print('Menu item clicked: ${instance.id}');
182+
}
180183
instance.emitSync(MenuItemClickedEvent(instance.id));
181184
}
182185
}
@@ -187,7 +190,9 @@ class MenuItem
187190
) {
188191
final instance = _instances[userData.address];
189192
if (instance != null) {
190-
print('Menu item submenu opened: ${instance.id}');
193+
if (kDebugMode) {
194+
print('Menu item submenu opened: ${instance.id}');
195+
}
191196
instance.emitSync(MenuItemSubmenuOpenedEvent(instance.id));
192197
}
193198
}
@@ -198,7 +203,9 @@ class MenuItem
198203
) {
199204
final instance = _instances[userData.address];
200205
if (instance != null) {
201-
print('Menu item submenu closed: ${instance.id}');
206+
if (kDebugMode) {
207+
print('Menu item submenu closed: ${instance.id}');
208+
}
202209
instance.emitSync(MenuItemSubmenuClosedEvent(instance.id));
203210
}
204211
}
@@ -388,7 +395,9 @@ class Menu
388395
) {
389396
final instance = _instances[userData.address];
390397
if (instance != null) {
391-
print('Menu opened: ${instance.id}');
398+
if (kDebugMode) {
399+
print('Menu opened: ${instance.id}');
400+
}
392401
instance.emitSync(MenuOpenedEvent(instance.id));
393402
}
394403
}
@@ -399,7 +408,9 @@ class Menu
399408
) {
400409
final instance = _instances[userData.address];
401410
if (instance != null) {
402-
print('Menu closed: ${instance.id}');
411+
if (kDebugMode) {
412+
print('Menu closed: ${instance.id}');
413+
}
403414
instance.emitSync(MenuClosedEvent(instance.id));
404415
}
405416
}

packages/nativeapi/lib/src/preferences.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ class Preferences
183183
final List<String> result = [];
184184

185185
for (int i = 0; i < count; i++) {
186-
final keyPtr = keysPtr.value.elementAt(i).value;
186+
final keyPtr = (keysPtr.value + i).value;
187187
if (keyPtr != nullptr) {
188188
result.add(keyPtr.cast<Utf8>().toDartString());
189189
}
@@ -222,7 +222,7 @@ class Preferences
222222
final Map<String, String> result = {};
223223

224224
for (int i = 0; i < count; i++) {
225-
final keyPtr = keysPtr.value.elementAt(i).value;
225+
final keyPtr = (keysPtr.value + i).value;
226226
if (keyPtr != nullptr) {
227227
final key = keyPtr.cast<Utf8>().toDartString();
228228
final value = get(key);

packages/nativeapi/lib/src/secure_storage.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ class SecureStorage
202202
final List<String> result = [];
203203

204204
for (int i = 0; i < count; i++) {
205-
final keyPtr = keysPtr.value.elementAt(i).value;
205+
final keyPtr = (keysPtr.value + i).value;
206206
if (keyPtr != nullptr) {
207207
result.add(keyPtr.cast<Utf8>().toDartString());
208208
}
@@ -241,7 +241,7 @@ class SecureStorage
241241
final Map<String, String> result = {};
242242

243243
for (int i = 0; i < count; i++) {
244-
final keyPtr = keysPtr.value.elementAt(i).value;
244+
final keyPtr = (keysPtr.value + i).value;
245245
if (keyPtr != nullptr) {
246246
final key = keyPtr.cast<Utf8>().toDartString();
247247
final value = get(key);

packages/nativeapi/lib/src/tray_icon.dart

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import 'dart:ffi';
22

33
import 'package:ffi/ffi.dart' as ffi;
4+
import 'package:flutter/foundation.dart' show kDebugMode;
45
import 'package:nativeapi/src/foundation/event_emitter.dart';
56
import 'package:nativeapi/src/foundation/cnativeapi_bindings_mixin.dart';
67
import 'package:nativeapi/src/foundation/geometry.dart';
@@ -179,7 +180,9 @@ class TrayIcon
179180
) {
180181
final instance = _instances[userData.address];
181182
if (instance != null) {
182-
print('Tray icon clicked');
183+
if (kDebugMode) {
184+
print('Tray icon clicked');
185+
}
183186
instance.emitSync(TrayIconClickedEvent());
184187
}
185188
}
@@ -190,7 +193,9 @@ class TrayIcon
190193
) {
191194
final instance = _instances[userData.address];
192195
if (instance != null) {
193-
print('Tray icon double clicked');
196+
if (kDebugMode) {
197+
print('Tray icon double clicked');
198+
}
194199
instance.emitSync(TrayIconDoubleClickedEvent());
195200
}
196201
}
@@ -201,7 +206,9 @@ class TrayIcon
201206
) {
202207
final instance = _instances[userData.address];
203208
if (instance != null) {
204-
print('Tray icon right clicked');
209+
if (kDebugMode) {
210+
print('Tray icon right clicked');
211+
}
205212
instance.emitSync(TrayIconRightClickedEvent());
206213
}
207214
}

packages/nativeapi/lib/src/window.dart

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -504,7 +504,6 @@ class Window
504504
native_visual_effect_t.NATIVE_VISUAL_EFFECT_ACRYLIC =>
505505
VisualEffect.acrylic,
506506
native_visual_effect_t.NATIVE_VISUAL_EFFECT_MICA => VisualEffect.mica,
507-
_ => VisualEffect.none,
508507
};
509508
}
510509

@@ -526,10 +525,10 @@ class Window
526525
/// ```
527526
set backgroundColor(Color value) {
528527
final nativeColor = bindings.native_color_from_rgba(
529-
value.red,
530-
value.green,
531-
value.blue,
532-
value.alpha,
528+
(value.r * 255.0).round().clamp(0, 255),
529+
(value.g * 255.0).round().clamp(0, 255),
530+
(value.b * 255.0).round().clamp(0, 255),
531+
(value.a * 255.0).round().clamp(0, 255),
533532
);
534533
bindings.native_window_set_background_color(_nativeHandle, nativeColor);
535534
}

0 commit comments

Comments
 (0)