Skip to content

Commit 02686c9

Browse files
committed
#355: fixed not all logs showing
1 parent 7ad2eec commit 02686c9

11 files changed

+469
-304
lines changed

lib/app.dart

+2-5
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,11 @@ import 'package:flutter_template/di/injectable.dart';
55
import 'package:flutter_template/navigator/main_navigator.dart';
66
import 'package:flutter_template/styles/theme_data.dart';
77
import 'package:flutter_template/util/locale/localization_fallback_cupertino_delegate.dart';
8+
import 'package:flutter_template/util/logging_util.dart';
89
import 'package:flutter_template/viewmodel/global/global_viewmodel.dart';
910
import 'package:flutter_template/widget/general/flavor_banner.dart';
1011
import 'package:flutter_template/widget/general/text_scale_factor.dart';
1112
import 'package:flutter_template/widget/provider/provider_widget.dart';
12-
import 'package:icapps_architecture/icapps_architecture.dart';
13-
import 'package:log_to_secure_file/log_to_secure_file.dart';
1413

1514
class MyApp extends StatelessWidget {
1615
const MyApp({super.key});
@@ -27,9 +26,7 @@ class MyApp extends StatelessWidget {
2726
SystemChrome.setEnabledSystemUIMode(SystemUiMode.edgeToEdge);
2827

2928
// init logger
30-
final fileLogger = getIt.get<SecureLogStorage>();
31-
fileLogger.init();
32-
LoggingFactory.configure(LoggingConfiguration(onLog: (value) => fileLogger.storeLogLine(value)));
29+
LoggingUtil.startLogging();
3330

3431
return const InternalApp();
3532
}

lib/util/logging_util.dart

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import 'package:flutter_template/di/injectable.dart';
2+
import 'package:icapps_architecture/icapps_architecture.dart';
3+
import 'package:log_to_secure_file/log_to_secure_file.dart';
4+
import 'package:synchronized/synchronized.dart';
5+
6+
class LoggingUtil {
7+
static final _loggerLock = Lock();
8+
9+
static void startLogging() {
10+
final fileLogger = getIt.get<SecureLogStorage>();
11+
fileLogger.init();
12+
LoggingFactory.configure(LoggingConfiguration(onLog: (value) => storeLogLine(value)));
13+
}
14+
15+
static void storeLogLine(String line) => _loggerLock.synchronized(() => getIt.get<SecureLogStorage>().storeLogLine(line));
16+
}

pubspec.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ dependencies:
5656
sprintf: ^7.0.0
5757
sqlite3_flutter_libs: ^0.5.12
5858
storage_inspector: ^0.4.0
59-
synchronized: ^3.0.1
59+
synchronized: ^3.3.0+3
6060
url_launcher: ^6.3.1
6161

6262
dev_dependencies:

test/util/test_util.mocks.dart

+55-36
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,14 @@ import 'dart:async' as _i5;
77
import 'dart:ui' as _i4;
88

99
import 'package:drift/drift.dart' as _i11;
10-
import 'package:flutter/material.dart' as _i1;
10+
import 'package:flutter/material.dart' as _i2;
1111
import 'package:flutter_template/model/snackbar/snackbar_data.dart' as _i12;
1212
import 'package:flutter_template/navigator/main_navigator.dart' as _i10;
1313
import 'package:flutter_template/util/locale/localization.dart' as _i7;
1414
import 'package:flutter_template/util/snackbar/error_util.dart' as _i9;
1515
import 'package:flutter_template/viewmodel/global/global_viewmodel.dart' as _i3;
1616
import 'package:icapps_architecture/icapps_architecture.dart' as _i8;
17-
import 'package:mockito/mockito.dart' as _i2;
17+
import 'package:mockito/mockito.dart' as _i1;
1818
import 'package:mockito/src/dummies.dart' as _i6;
1919

2020
// ignore_for_file: type=lint
@@ -30,9 +30,19 @@ import 'package:mockito/src/dummies.dart' as _i6;
3030
// ignore_for_file: camel_case_types
3131
// ignore_for_file: subtype_of_sealed_class
3232

33-
class _FakeGlobalKey_0<T extends _i1.State<_i1.StatefulWidget>>
34-
extends _i2.SmartFake implements _i1.GlobalKey<T> {
35-
_FakeGlobalKey_0(
33+
class _FakeBuildContext_0 extends _i1.SmartFake implements _i2.BuildContext {
34+
_FakeBuildContext_0(
35+
Object parent,
36+
Invocation parentInvocation,
37+
) : super(
38+
parent,
39+
parentInvocation,
40+
);
41+
}
42+
43+
class _FakeGlobalKey_1<T extends _i2.State<_i2.StatefulWidget>>
44+
extends _i1.SmartFake implements _i2.GlobalKey<T> {
45+
_FakeGlobalKey_1(
3646
Object parent,
3747
Invocation parentInvocation,
3848
) : super(
@@ -44,9 +54,9 @@ class _FakeGlobalKey_0<T extends _i1.State<_i1.StatefulWidget>>
4454
/// A class which mocks [GlobalViewModel].
4555
///
4656
/// See the documentation for Mockito's code generation for more information.
47-
class MockGlobalViewModel extends _i2.Mock implements _i3.GlobalViewModel {
57+
class MockGlobalViewModel extends _i1.Mock implements _i3.GlobalViewModel {
4858
MockGlobalViewModel() {
49-
_i2.throwOnMissingStub(this);
59+
_i1.throwOnMissingStub(this);
5060
}
5161

5262
@override
@@ -56,10 +66,10 @@ class MockGlobalViewModel extends _i2.Mock implements _i3.GlobalViewModel {
5666
) as List<_i4.Locale>);
5767

5868
@override
59-
_i1.ThemeMode get themeMode => (super.noSuchMethod(
69+
_i2.ThemeMode get themeMode => (super.noSuchMethod(
6070
Invocation.getter(#themeMode),
61-
returnValue: _i1.ThemeMode.system,
62-
) as _i1.ThemeMode);
71+
returnValue: _i2.ThemeMode.system,
72+
) as _i2.ThemeMode);
6373

6474
@override
6575
bool get showsTranslationKeys => (super.noSuchMethod(
@@ -90,7 +100,7 @@ class MockGlobalViewModel extends _i2.Mock implements _i3.GlobalViewModel {
90100
) as _i5.Future<void>);
91101

92102
@override
93-
_i5.Future<void> updateThemeMode(_i1.ThemeMode? themeMode) =>
103+
_i5.Future<void> updateThemeMode(_i2.ThemeMode? themeMode) =>
94104
(super.noSuchMethod(
95105
Invocation.method(
96106
#updateThemeMode,
@@ -292,15 +302,15 @@ class MockGlobalViewModel extends _i2.Mock implements _i3.GlobalViewModel {
292302
/// A class which mocks [ErrorUtil].
293303
///
294304
/// See the documentation for Mockito's code generation for more information.
295-
class MockErrorUtil extends _i2.Mock implements _i9.ErrorUtil {
305+
class MockErrorUtil extends _i1.Mock implements _i9.ErrorUtil {
296306
MockErrorUtil() {
297-
_i2.throwOnMissingStub(this);
307+
_i1.throwOnMissingStub(this);
298308
}
299309

300310
@override
301311
String? showError({
302312
required dynamic error,
303-
required _i1.BuildContext? context,
313+
required _i2.BuildContext? context,
304314
}) =>
305315
(super.noSuchMethod(Invocation.method(
306316
#showError,
@@ -314,7 +324,7 @@ class MockErrorUtil extends _i2.Mock implements _i9.ErrorUtil {
314324
@override
315325
void showErrorWithLocaleKey({
316326
required String? messageKey,
317-
required _i1.BuildContext? context,
327+
required _i2.BuildContext? context,
318328
String? titleKey,
319329
List<dynamic>? args,
320330
}) =>
@@ -336,19 +346,28 @@ class MockErrorUtil extends _i2.Mock implements _i9.ErrorUtil {
336346
/// A class which mocks [MainNavigator].
337347
///
338348
/// See the documentation for Mockito's code generation for more information.
339-
class MockMainNavigator extends _i2.Mock implements _i10.MainNavigator {
349+
class MockMainNavigator extends _i1.Mock implements _i10.MainNavigator {
340350
MockMainNavigator() {
341-
_i2.throwOnMissingStub(this);
351+
_i1.throwOnMissingStub(this);
342352
}
343353

344354
@override
345-
_i1.GlobalKey<_i1.NavigatorState> get navigatorKey => (super.noSuchMethod(
355+
_i2.BuildContext get context => (super.noSuchMethod(
356+
Invocation.getter(#context),
357+
returnValue: _FakeBuildContext_0(
358+
this,
359+
Invocation.getter(#context),
360+
),
361+
) as _i2.BuildContext);
362+
363+
@override
364+
_i2.GlobalKey<_i2.NavigatorState> get navigatorKey => (super.noSuchMethod(
346365
Invocation.getter(#navigatorKey),
347-
returnValue: _FakeGlobalKey_0<_i1.NavigatorState>(
366+
returnValue: _FakeGlobalKey_1<_i2.NavigatorState>(
348367
this,
349368
Invocation.getter(#navigatorKey),
350369
),
351-
) as _i1.GlobalKey<_i1.NavigatorState>);
370+
) as _i2.GlobalKey<_i2.NavigatorState>);
352371

353372
@override
354373
_i5.Future<void> goToDatabase(_i11.GeneratedDatabase? db) =>
@@ -410,14 +429,14 @@ class MockMainNavigator extends _i2.Mock implements _i10.MainNavigator {
410429
) as _i5.Future<void>);
411430

412431
@override
413-
_i1.Route<dynamic>? onGenerateRoute(_i1.RouteSettings? settings) =>
432+
_i2.Route<dynamic>? onGenerateRoute(_i2.RouteSettings? settings) =>
414433
(super.noSuchMethod(Invocation.method(
415434
#onGenerateRoute,
416435
[settings],
417-
)) as _i1.Route<dynamic>?);
436+
)) as _i2.Route<dynamic>?);
418437

419438
@override
420-
void goToHomeScreen({_i1.Key? key}) => super.noSuchMethod(
439+
void goToHomeScreen({_i2.Key? key}) => super.noSuchMethod(
421440
Invocation.method(
422441
#goToHomeScreen,
423442
[],
@@ -427,7 +446,7 @@ class MockMainNavigator extends _i2.Mock implements _i10.MainNavigator {
427446
);
428447

429448
@override
430-
void goToSplashScreen({_i1.Key? key}) => super.noSuchMethod(
449+
void goToSplashScreen({_i2.Key? key}) => super.noSuchMethod(
431450
Invocation.method(
432451
#goToSplashScreen,
433452
[],
@@ -437,7 +456,7 @@ class MockMainNavigator extends _i2.Mock implements _i10.MainNavigator {
437456
);
438457

439458
@override
440-
_i5.Future<void> goToLicenseScreen({_i1.Key? key}) => (super.noSuchMethod(
459+
_i5.Future<void> goToLicenseScreen({_i2.Key? key}) => (super.noSuchMethod(
441460
Invocation.method(
442461
#goToLicenseScreen,
443462
[],
@@ -448,7 +467,7 @@ class MockMainNavigator extends _i2.Mock implements _i10.MainNavigator {
448467
) as _i5.Future<void>);
449468

450469
@override
451-
_i5.Future<void> goToTodoAddScreen({_i1.Key? key}) => (super.noSuchMethod(
470+
_i5.Future<void> goToTodoAddScreen({_i2.Key? key}) => (super.noSuchMethod(
452471
Invocation.method(
453472
#goToTodoAddScreen,
454473
[],
@@ -459,7 +478,7 @@ class MockMainNavigator extends _i2.Mock implements _i10.MainNavigator {
459478
) as _i5.Future<void>);
460479

461480
@override
462-
_i5.Future<void> goToAnalyticsPermissionScreen({_i1.Key? key}) =>
481+
_i5.Future<void> goToAnalyticsPermissionScreen({_i2.Key? key}) =>
463482
(super.noSuchMethod(
464483
Invocation.method(
465484
#goToAnalyticsPermissionScreen,
@@ -471,7 +490,7 @@ class MockMainNavigator extends _i2.Mock implements _i10.MainNavigator {
471490
) as _i5.Future<void>);
472491

473492
@override
474-
void goToLoginScreen({_i1.Key? key}) => super.noSuchMethod(
493+
void goToLoginScreen({_i2.Key? key}) => super.noSuchMethod(
475494
Invocation.method(
476495
#goToLoginScreen,
477496
[],
@@ -481,7 +500,7 @@ class MockMainNavigator extends _i2.Mock implements _i10.MainNavigator {
481500
);
482501

483502
@override
484-
_i5.Future<void> goToThemeModeSelectorScreen({_i1.Key? key}) =>
503+
_i5.Future<void> goToThemeModeSelectorScreen({_i2.Key? key}) =>
485504
(super.noSuchMethod(
486505
Invocation.method(
487506
#goToThemeModeSelectorScreen,
@@ -493,7 +512,7 @@ class MockMainNavigator extends _i2.Mock implements _i10.MainNavigator {
493512
) as _i5.Future<void>);
494513

495514
@override
496-
_i5.Future<void> goToDebugPlatformSelectorScreen({_i1.Key? key}) =>
515+
_i5.Future<void> goToDebugPlatformSelectorScreen({_i2.Key? key}) =>
497516
(super.noSuchMethod(
498517
Invocation.method(
499518
#goToDebugPlatformSelectorScreen,
@@ -505,7 +524,7 @@ class MockMainNavigator extends _i2.Mock implements _i10.MainNavigator {
505524
) as _i5.Future<void>);
506525

507526
@override
508-
_i5.Future<void> goToDebugScreen({_i1.Key? key}) => (super.noSuchMethod(
527+
_i5.Future<void> goToDebugScreen({_i2.Key? key}) => (super.noSuchMethod(
509528
Invocation.method(
510529
#goToDebugScreen,
511530
[],
@@ -516,7 +535,7 @@ class MockMainNavigator extends _i2.Mock implements _i10.MainNavigator {
516535
) as _i5.Future<void>);
517536

518537
@override
519-
_i5.Future<void> goToLogsScreen({_i1.Key? key}) => (super.noSuchMethod(
538+
_i5.Future<void> goToLogsScreen({_i2.Key? key}) => (super.noSuchMethod(
520539
Invocation.method(
521540
#goToLogsScreen,
522541
[],
@@ -529,7 +548,7 @@ class MockMainNavigator extends _i2.Mock implements _i10.MainNavigator {
529548
@override
530549
_i5.Future<void> goToLogDetailScreen({
531550
required String? date,
532-
_i1.Key? key,
551+
_i2.Key? key,
533552
}) =>
534553
(super.noSuchMethod(
535554
Invocation.method(
@@ -564,7 +583,7 @@ class MockMainNavigator extends _i2.Mock implements _i10.MainNavigator {
564583
);
565584

566585
@override
567-
void popUntil(bool Function(_i1.Route<dynamic>)? predicate) =>
586+
void popUntil(bool Function(_i2.Route<dynamic>)? predicate) =>
568587
super.noSuchMethod(
569588
Invocation.method(
570589
#popUntil,
@@ -583,7 +602,7 @@ class MockMainNavigator extends _i2.Mock implements _i10.MainNavigator {
583602
);
584603

585604
@override
586-
_i5.Future<T?> showCustomDialog<T>({_i1.Widget? widget}) =>
605+
_i5.Future<T?> showCustomDialog<T>({_i2.Widget? widget}) =>
587606
(super.noSuchMethod(
588607
Invocation.method(
589608
#showCustomDialog,
@@ -594,7 +613,7 @@ class MockMainNavigator extends _i2.Mock implements _i10.MainNavigator {
594613
) as _i5.Future<T?>);
595614

596615
@override
597-
_i5.Future<T?> showBottomSheet<T>({_i1.Widget? widget}) =>
616+
_i5.Future<T?> showBottomSheet<T>({_i2.Widget? widget}) =>
598617
(super.noSuchMethod(
599618
Invocation.method(
600619
#showBottomSheet,

0 commit comments

Comments
 (0)