diff --git a/CHANGELOG.md b/CHANGELOG.md index 810ac8f..d18177d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## 2.1.0 + +* Initialize `object` if detected as dependency. +* Fixed imports on test. +* Fixed catalog colors in dark mode. +* Fixed SVG light/dark mode switch. + ## 2.0.0 * Added `test` and `integration_test` generation. diff --git a/example/integration_test/catalog_widget_integration_test.dart b/example/integration_test/catalog_widget_integration_test.dart index c34e55d..d813a30 100644 --- a/example/integration_test/catalog_widget_integration_test.dart +++ b/example/integration_test/catalog_widget_integration_test.dart @@ -9,25 +9,25 @@ import 'package:integration_test/integration_test.dart'; import 'package:example/widgets/utils/bottom/catalog/integration_test/fab_widget_integration_test.dart' - as akcl; + as fflh; import 'package:example/widgets/other_utils/bottom/catalog/integration_test/warning_info_widget_integration_test.dart' - as gjrq; + as iuso; import 'package:example/widgets/screen/catalog/integration_test/sized_container_integration_test.dart' - as pvar; + as bpok; import 'package:example/widgets/screen/catalog/integration_test/body_widget_integration_test.dart' - as utcx; + as dshj; import 'package:example/widgets/screen/catalog/integration_test/counter_widget_integration_test.dart' - as ujyk; + as ageq; import 'package:example/widgets/catalog/integration_test/main_screen_integration_test.dart' - as sqbo; + as bbvw; void main() { IntegrationTestWidgetsFlutterBinding.ensureInitialized(); - akcl.FabWidgetIntegrationTest().main(); - gjrq.WarningInfoWidgetIntegrationTest().main(); - pvar.SizedContainerIntegrationTest().main(); - utcx.BodyWidgetIntegrationTest().main(); - ujyk.CounterWidgetIntegrationTest().main(); - sqbo.MainScreenIntegrationTest().main(); + fflh.FabWidgetIntegrationTest().main(); + iuso.WarningInfoWidgetIntegrationTest().main(); + bpok.SizedContainerIntegrationTest().main(); + dshj.BodyWidgetIntegrationTest().main(); + ageq.CounterWidgetIntegrationTest().main(); + bbvw.MainScreenIntegrationTest().main(); } diff --git a/example/lib/widgets/catalog/preview/main_screen.preview.dart b/example/lib/widgets/catalog/preview/main_screen.preview.dart index 7095ff7..758b875 100644 --- a/example/lib/widgets/catalog/preview/main_screen.preview.dart +++ b/example/lib/widgets/catalog/preview/main_screen.preview.dart @@ -51,7 +51,6 @@ class MainScreenPreview extends ParentPreviewWidget { clipBehavior: Clip.hardEdge, child: Container( padding: const EdgeInsets.all(15), - color: Colors.white, child: Row( children: [ Expanded( @@ -83,7 +82,6 @@ class MainScreenPreview extends ParentPreviewWidget { clipBehavior: Clip.hardEdge, child: Container( padding: const EdgeInsets.all(15), - color: Colors.white, child: Row( children: [ Expanded( diff --git a/example/lib/widgets/other_utils/bottom/catalog/preview/warning_info_widget.preview.dart b/example/lib/widgets/other_utils/bottom/catalog/preview/warning_info_widget.preview.dart index 71ec6ab..a43e4e1 100644 --- a/example/lib/widgets/other_utils/bottom/catalog/preview/warning_info_widget.preview.dart +++ b/example/lib/widgets/other_utils/bottom/catalog/preview/warning_info_widget.preview.dart @@ -47,7 +47,6 @@ class WarningInfoWidgetPreview extends ParentPreviewWidget { clipBehavior: Clip.hardEdge, child: Container( padding: const EdgeInsets.all(15), - color: Colors.white, child: Row( children: [ Expanded( @@ -79,7 +78,6 @@ class WarningInfoWidgetPreview extends ParentPreviewWidget { clipBehavior: Clip.hardEdge, child: Container( padding: const EdgeInsets.all(15), - color: Colors.white, child: Row( children: [ Expanded( diff --git a/example/lib/widgets/screen/catalog/preview/body_widget.preview.dart b/example/lib/widgets/screen/catalog/preview/body_widget.preview.dart index 24af584..fec8804 100644 --- a/example/lib/widgets/screen/catalog/preview/body_widget.preview.dart +++ b/example/lib/widgets/screen/catalog/preview/body_widget.preview.dart @@ -49,7 +49,6 @@ class BodyWidgetPreview extends ParentPreviewWidget { clipBehavior: Clip.hardEdge, child: Container( padding: const EdgeInsets.all(15), - color: Colors.white, child: Row( children: [ Expanded( @@ -81,7 +80,6 @@ class BodyWidgetPreview extends ParentPreviewWidget { clipBehavior: Clip.hardEdge, child: Container( padding: const EdgeInsets.all(15), - color: Colors.white, child: Row( children: [ Expanded( diff --git a/example/lib/widgets/screen/catalog/preview/counter_widget.preview.dart b/example/lib/widgets/screen/catalog/preview/counter_widget.preview.dart index 04f76ab..462b54d 100644 --- a/example/lib/widgets/screen/catalog/preview/counter_widget.preview.dart +++ b/example/lib/widgets/screen/catalog/preview/counter_widget.preview.dart @@ -49,7 +49,6 @@ class CounterWidgetPreview extends ParentPreviewWidget { clipBehavior: Clip.hardEdge, child: Container( padding: const EdgeInsets.all(15), - color: Colors.white, child: Row( children: [ Expanded( @@ -81,7 +80,6 @@ class CounterWidgetPreview extends ParentPreviewWidget { clipBehavior: Clip.hardEdge, child: Container( padding: const EdgeInsets.all(15), - color: Colors.white, child: Row( children: [ Expanded( diff --git a/example/lib/widgets/screen/catalog/preview/sized_container.preview.dart b/example/lib/widgets/screen/catalog/preview/sized_container.preview.dart index b32761d..3983a25 100644 --- a/example/lib/widgets/screen/catalog/preview/sized_container.preview.dart +++ b/example/lib/widgets/screen/catalog/preview/sized_container.preview.dart @@ -47,7 +47,6 @@ class SizedContainerPreview extends ParentPreviewWidget { clipBehavior: Clip.hardEdge, child: Container( padding: const EdgeInsets.all(15), - color: Colors.white, child: Row( children: [ Expanded( @@ -79,7 +78,6 @@ class SizedContainerPreview extends ParentPreviewWidget { clipBehavior: Clip.hardEdge, child: Container( padding: const EdgeInsets.all(15), - color: Colors.white, child: Row( children: [ Expanded( diff --git a/example/lib/widgets/utils/bottom/catalog/preview/fab_widget.preview.dart b/example/lib/widgets/utils/bottom/catalog/preview/fab_widget.preview.dart index 8b87e15..688103e 100644 --- a/example/lib/widgets/utils/bottom/catalog/preview/fab_widget.preview.dart +++ b/example/lib/widgets/utils/bottom/catalog/preview/fab_widget.preview.dart @@ -47,7 +47,6 @@ class FabWidgetPreview extends ParentPreviewWidget { clipBehavior: Clip.hardEdge, child: Container( padding: const EdgeInsets.all(15), - color: Colors.white, child: Row( children: [ Expanded( @@ -79,7 +78,6 @@ class FabWidgetPreview extends ParentPreviewWidget { clipBehavior: Clip.hardEdge, child: Container( padding: const EdgeInsets.all(15), - color: Colors.white, child: Row( children: [ Expanded( diff --git a/example/test/catalog_widget_test.dart b/example/test/catalog_widget_test.dart index 8c11d3d..9b57362 100644 --- a/example/test/catalog_widget_test.dart +++ b/example/test/catalog_widget_test.dart @@ -1,22 +1,22 @@ /// AUTOGENERATED FILE. DO NOT EDIT import 'package:example/widgets/utils/bottom/catalog/test/fab_widget_test.dart' - as aleo; + as xccl; import 'package:example/widgets/other_utils/bottom/catalog/test/warning_info_widget_test.dart' - as dgjg; + as zvep; import 'package:example/widgets/screen/catalog/test/sized_container_test.dart' - as ntbg; + as lwnf; import 'package:example/widgets/screen/catalog/test/body_widget_test.dart' - as wwjj; + as tymo; import 'package:example/widgets/screen/catalog/test/counter_widget_test.dart' - as dqlj; -import 'package:example/widgets/catalog/test/main_screen_test.dart' as gpwz; + as ztou; +import 'package:example/widgets/catalog/test/main_screen_test.dart' as zwdp; void main() { - aleo.FabWidgetTest().main(); - dgjg.WarningInfoWidgetTest().main(); - ntbg.SizedContainerTest().main(); - wwjj.BodyWidgetTest().main(); - dqlj.CounterWidgetTest().main(); - gpwz.MainScreenTest().main(); + xccl.FabWidgetTest().main(); + zvep.WarningInfoWidgetTest().main(); + lwnf.SizedContainerTest().main(); + tymo.BodyWidgetTest().main(); + ztou.CounterWidgetTest().main(); + zwdp.MainScreenTest().main(); } diff --git a/lib/catalog.dart b/lib/catalog.dart index 6816675..0bd9c4b 100644 --- a/lib/catalog.dart +++ b/lib/catalog.dart @@ -7,6 +7,7 @@ import 'package:catalog/src/builders/catalog/component_node.dart'; import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; +import 'src/builders/preview/grid_color.dart'; import 'src/builders/preview/preview_boundary.dart'; import 'src/builders/preview/preview_render_widget.dart'; @@ -18,6 +19,7 @@ export 'package:catalog/src/builders/device/device.dart'; export 'package:catalog/src/builders/dummy/dummy.dart'; export 'package:catalog/src/builders/dummy/dummy_text.dart'; export 'package:catalog/src/builders/dummy/preview_dummy.dart'; +export 'package:catalog/src/builders/preview/grid_color.dart'; export 'package:catalog/src/builders/preview/parent_preview_widget.dart'; export 'package:catalog/src/builders/preview/preview_boundary.dart'; export 'package:catalog/src/builders/screenshots/background.dart'; @@ -35,8 +37,8 @@ export 'package:catalog/src/extensions/widget_test_ext.dart'; export 'package:catalog/src/utils/constants.dart'; export 'package:device_frame/device_frame.dart'; export 'package:flutter_test/flutter_test.dart'; -export 'package:integration_test/integration_test.dart'; export 'package:go_router/go_router.dart'; +export 'package:integration_test/integration_test.dart'; class Catalog { static Catalog? _instance; @@ -52,6 +54,11 @@ class Catalog { GoRouter? router; + GridColor gridColor = GridColor( + light: Colors.grey[300] ?? Colors.grey, + dark: Colors.grey[300] ?? Colors.grey, + ); + bool get active => router != null; BuildContext get activeContext { diff --git a/lib/src/bin/builders/preview_builder.dart b/lib/src/bin/builders/preview_builder.dart index 4ea79b3..4ca2668 100644 --- a/lib/src/bin/builders/preview_builder.dart +++ b/lib/src/bin/builders/preview_builder.dart @@ -66,7 +66,6 @@ class ${clazz}Preview extends ParentPreviewWidget { clipBehavior: Clip.hardEdge, child: Container( padding: const EdgeInsets.all(15), - color: Colors.white, child: Row( children: [ Expanded( @@ -98,7 +97,6 @@ class ${clazz}Preview extends ParentPreviewWidget { clipBehavior: Clip.hardEdge, child: Container( padding: const EdgeInsets.all(15), - color: Colors.white, child: Row( children: [ Expanded( diff --git a/lib/src/bin/builders/test_builder.dart b/lib/src/bin/builders/test_builder.dart index fb41dd5..939bfc1 100644 --- a/lib/src/bin/builders/test_builder.dart +++ b/lib/src/bin/builders/test_builder.dart @@ -2,6 +2,7 @@ import 'dart:io'; import 'dart:math'; import 'package:catalog/src/bin/utils/test_builder_info.dart'; +import 'package:catalog/src/extensions/string_ext.dart'; Future generateTest( dynamic config, @@ -24,7 +25,7 @@ Future generateTest( var importParts = classImport.split('/'); importParts.removeAt(importParts.length - 1); - importParts.add(config['output']); + importParts.add(config['pageRoute']); importParts.add('test'); importParts.add('${name}_test.dart'); @@ -124,7 +125,7 @@ Future generateIntegrationTest( var importParts = classImport.split('/'); importParts.removeAt(importParts.length - 1); - importParts.add(config['output']); + importParts.add(config['pageRoute']); importParts.add('integration_test'); importParts.add('${name}_integration_test.dart'); @@ -206,19 +207,29 @@ class ${clazz}IntegrationTest { Future generateMainTest( String basePath, List tests, + String modelImport, + String modelImplementation, ) async { File file = File('./${basePath}test/catalog_widget_test.dart'); print('๐Ÿงช Updating catalog test collector (${file.path})'); + if (modelImport.isNotEmpty && modelImplementation.isNotEmpty) { + print('๐Ÿงช๐Ÿ“ฆ Object dependency detected. Including ($modelImport)'); + } + var content = ''' /// AUTOGENERATED FILE. DO NOT EDIT +${modelImport.isNotEmpty ? 'import \'$modelImport\';' : ''} ${tests.map((t) { return 'import \'${t.import}\' as ${t.alias};'; }).join('\n')} void main() { + + ${modelImplementation.isNotEmpty ? '$modelImplementation;' : ''} + ${tests.map((t) { return '${t.alias}.${t.clazzName}().main();'; }).join('\n')} @@ -232,6 +243,8 @@ void main() { Future generateMainIntegrationTest( String basePath, List tests, + String modelImport, + String modelImplementation, ) async { String testPath = './${basePath}integration_test/'; @@ -242,6 +255,10 @@ Future generateMainIntegrationTest( print('๐Ÿงช Updating catalog integration test collector (${file.path})'); + if (modelImport.isNotEmpty && modelImplementation.isNotEmpty) { + print('๐Ÿงช๐Ÿ“ฆ Object dependency detected. Including ($modelImport)'); + } + var content = ''' /// AUTOGENERATED FILE. DO NOT EDIT @@ -253,6 +270,8 @@ Future generateMainIntegrationTest( import 'package:integration_test/integration_test.dart'; +${modelImport.isNotEmpty ? 'import \'$modelImport\';' : ''} + ${tests.map((t) { return 'import \'${t.import}\' as ${t.alias};'; }).join('\n')} @@ -260,6 +279,8 @@ ${tests.map((t) { void main() { IntegrationTestWidgetsFlutterBinding.ensureInitialized(); + ${modelImplementation.isNotEmpty ? '$modelImplementation;' : ''} + ${tests.map((t) { return '${t.alias}.${t.clazzName}().main();'; }).join('\n')} @@ -276,3 +297,16 @@ String buildTestAlias(int size) { return String.fromCharCodes(Iterable.generate( size, (_) => chars.codeUnitAt(random.nextInt(chars.length)))); } + +String getObjectImport(String appId, Map config) { + if (config.isEmpty) return ''; + return 'package:$appId/${config['outputFolder']}/${config['modelsFile']}'; +} + +String getObjectImplementation(Map config) { + if (config.isEmpty) return ''; + var file = config['modelsFile'] as String; + var n = file.split('.').first; + var clazz = n.toClassName(); + return '$clazz().instancesForLoad()'; +} diff --git a/lib/src/bin/tasks/tasks/catalog_task.dart b/lib/src/bin/tasks/tasks/catalog_task.dart index 1a0bebd..e9f26b9 100644 --- a/lib/src/bin/tasks/tasks/catalog_task.dart +++ b/lib/src/bin/tasks/tasks/catalog_task.dart @@ -13,7 +13,7 @@ class CatalogTask extends BaseTask { final base = args.isEmpty ? '' : '${args.first}/'; var appId = loadId(base); - var config = loadConfigFile(base); + var config = loadCatalogConfigFile(base); final page = config['pageFile'] ?? 'catalog_component.dart'; final pageName = config['pageName'] ?? 'CatalogComponent'; diff --git a/lib/src/bin/tasks/tasks/format_task.dart b/lib/src/bin/tasks/tasks/format_task.dart index 59579a9..60d422e 100644 --- a/lib/src/bin/tasks/tasks/format_task.dart +++ b/lib/src/bin/tasks/tasks/format_task.dart @@ -9,7 +9,7 @@ class FormatTask extends BaseTask { Future work(List args) async { final base = args.isEmpty ? '' : '${args.first}/'; - var config = loadConfigFile(base); + var config = loadCatalogConfigFile(base); final File file = File('./$base${config['base']}/${config['output']}/process.dart'); diff --git a/lib/src/bin/tasks/tasks/integration_test_task.dart b/lib/src/bin/tasks/tasks/integration_test_task.dart index 78138ef..c39f1b8 100644 --- a/lib/src/bin/tasks/tasks/integration_test_task.dart +++ b/lib/src/bin/tasks/tasks/integration_test_task.dart @@ -12,14 +12,19 @@ class IntegrationTestTask extends BaseTask { final base = args.isEmpty ? '' : '${args.first}/'; var appId = loadId(base); - var config = loadConfigFile(base); + var catalogConfig = loadCatalogConfigFile(base); + var configObject = loadObjectConfigFile(base); - final prefixValue = config['prefix'] ?? 'preview'; + String objectImport = getObjectImport(appId, configObject); + String objectImplementation = getObjectImplementation(configObject); - final dir = Directory('./$base${config['base']}'); + final prefixValue = catalogConfig['prefix'] ?? 'preview'; + + final dir = Directory('./$base${catalogConfig['base']}'); await dir.create(recursive: true); - final dirOutPut = Directory('./$base${config['base']}/${config['output']}'); + final dirOutPut = + Directory('./$base${catalogConfig['base']}/${catalogConfig['output']}'); await dirOutPut.create(recursive: true); final List entities = @@ -46,9 +51,9 @@ class IntegrationTestTask extends BaseTask { for (FileSystemEntity fileSystemEntity in files) { final File file = File(fileSystemEntity.path); - var p = file.path.split(config['base'])[1]; + var p = file.path.split(catalogConfig['base'])[1]; var classImport = 'package:$appId$p'; - var preview = await previewOnFile(base, config, file.path); + var preview = await previewOnFile(base, catalogConfig, file.path); var previewAnnotation = await findPreviewAnnotation(file.path); if (previewAnnotation == null) continue; var className = await findClassName(file.path); @@ -56,7 +61,7 @@ class IntegrationTestTask extends BaseTask { if (preview == null) continue; final testFile = await generateIntegrationTest( - config, + catalogConfig, file.path, className, classImport, @@ -66,6 +71,11 @@ class IntegrationTestTask extends BaseTask { test.add(testFile); } - await generateMainIntegrationTest(base, test); + await generateMainIntegrationTest( + base, + test, + objectImport, + objectImplementation, + ); } } diff --git a/lib/src/bin/tasks/tasks/preview_task.dart b/lib/src/bin/tasks/tasks/preview_task.dart index 79737dd..185a3d5 100644 --- a/lib/src/bin/tasks/tasks/preview_task.dart +++ b/lib/src/bin/tasks/tasks/preview_task.dart @@ -13,7 +13,7 @@ class PreviewTask extends BaseTask { final base = args.isEmpty ? '' : '${args.first}/'; var appId = loadId(base); - var config = loadConfigFile(base); + var config = loadCatalogConfigFile(base); final prefixValue = config['prefix'] ?? 'preview'; diff --git a/lib/src/bin/tasks/tasks/test_task.dart b/lib/src/bin/tasks/tasks/test_task.dart index b11389d..e57ea55 100644 --- a/lib/src/bin/tasks/tasks/test_task.dart +++ b/lib/src/bin/tasks/tasks/test_task.dart @@ -12,14 +12,19 @@ class TestTask extends BaseTask { final base = args.isEmpty ? '' : '${args.first}/'; var appId = loadId(base); - var config = loadConfigFile(base); + var configCatalog = loadCatalogConfigFile(base); + var configObject = loadObjectConfigFile(base); - final prefixValue = config['prefix'] ?? 'preview'; + String objectImport = getObjectImport(appId, configObject); + String objectImplementation = getObjectImplementation(configObject); - final dir = Directory('./$base${config['base']}'); + final prefixValue = configCatalog['prefix'] ?? 'preview'; + + final dir = Directory('./$base${configCatalog['base']}'); await dir.create(recursive: true); - final dirOutPut = Directory('./$base${config['base']}/${config['output']}'); + final dirOutPut = + Directory('./$base${configCatalog['base']}/${configCatalog['output']}'); await dirOutPut.create(recursive: true); final List entities = @@ -46,9 +51,9 @@ class TestTask extends BaseTask { for (FileSystemEntity fileSystemEntity in files) { final File file = File(fileSystemEntity.path); - var p = file.path.split(config['base'])[1]; + var p = file.path.split(configCatalog['base'])[1]; var classImport = 'package:$appId$p'; - var preview = await previewOnFile(base, config, file.path); + var preview = await previewOnFile(base, configCatalog, file.path); var previewAnnotation = await findPreviewAnnotation(file.path); if (previewAnnotation == null) continue; var className = await findClassName(file.path); @@ -56,7 +61,7 @@ class TestTask extends BaseTask { if (preview == null) continue; final testFile = await generateTest( - config, + configCatalog, file.path, className, classImport, @@ -66,6 +71,11 @@ class TestTask extends BaseTask { test.add(testFile); } - await generateMainTest(base, test); + await generateMainTest( + base, + test, + objectImport, + objectImplementation, + ); } } diff --git a/lib/src/bin/utils/configuration.dart b/lib/src/bin/utils/configuration.dart index 6e7cb04..18b6ab6 100644 --- a/lib/src/bin/utils/configuration.dart +++ b/lib/src/bin/utils/configuration.dart @@ -6,8 +6,9 @@ import 'package:yaml/yaml.dart'; import 'exceptions.dart'; -const configId = 'catalog'; -const nammeId = 'name'; +const catalogConfigId = 'catalog'; +const objectConfigId = 'object'; +const nameId = 'name'; const dependenciesId = 'dependencies'; const pageNameId = 'pageFile'; const assetsId = 'assets'; @@ -19,23 +20,48 @@ String introMessage(String version) => ''' โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• '''; -Map loadConfigFile(String basePath) { +Map loadCatalogConfigFile(String basePath) { final File file = File("${basePath}pubspec.yaml"); final String yamlString = file.readAsStringSync(); // ignore: always_specify_types final Map yamlMap = loadYaml(yamlString); - if (yamlMap[configId] is! Map) { + if (yamlMap[catalogConfigId] is! Map) { stderr.writeln( const NoConfigFoundException( - 'Check your config file pubspec.yaml has a `$configId` section', + 'Check your config file pubspec.yaml has a `$catalogConfigId` section', ), ); exit(1); } final Map config = {}; - for (MapEntry entry in yamlMap[configId].entries) { + for (MapEntry entry in yamlMap[catalogConfigId].entries) { + config[entry.key] = entry.value; + } + + return config; +} + +Map loadObjectConfigFile(String basePath) { + final File file = File("${basePath}pubspec.yaml"); + final String yamlString = file.readAsStringSync(); + // ignore: always_specify_types + final Map yamlMap = loadYaml(yamlString); + + if (yamlMap[objectConfigId] == null) return {}; + + if (yamlMap[objectConfigId] is! Map) { + stderr.writeln( + const NoConfigFoundException( + 'Check your config file pubspec.yaml has a `$objectConfigId` section', + ), + ); + exit(1); + } + + final Map config = {}; + for (MapEntry entry in yamlMap[objectConfigId].entries) { config[entry.key] = entry.value; } @@ -71,7 +97,7 @@ String loadId(String basePath) { // ignore: always_specify_types final Map yamlMap = loadYaml(yamlString); - return yamlMap[nammeId]; + return yamlMap[nameId]; } Future previewOnFile( diff --git a/lib/src/builders/catalog/preview_scaffold.dart b/lib/src/builders/catalog/preview_scaffold.dart index 3950baa..a1bad9a 100644 --- a/lib/src/builders/catalog/preview_scaffold.dart +++ b/lib/src/builders/catalog/preview_scaffold.dart @@ -1,5 +1,6 @@ import 'package:catalog/catalog.dart'; import 'package:catalog/src/utils/svg.dart'; +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'drawer_preview.dart'; @@ -33,22 +34,24 @@ class PreviewScaffold extends StatelessWidget { ), ), appBar: AppBar( - foregroundColor: Colors.white, - backgroundColor: Colors.teal, title: Text(title ?? ''), ), body: Stack( children: [ Container( - color: const Color(0xFFECE5DD), + color: Theme.of(context).colorScheme.surface, ), - const Positioned.fill( + Positioned.fill( child: Image( repeat: ImageRepeat.repeat, image: Svg( 'ff', scale: 2, - foregroundColor: Colors.white, + foregroundColor: + PlatformDispatcher.instance.platformBrightness == + Brightness.light + ? Catalog().gridColor.light + : Catalog().gridColor.dark, size: Size(50, 50), ), ), diff --git a/lib/src/builders/preview/grid_color.dart b/lib/src/builders/preview/grid_color.dart new file mode 100644 index 0000000..f7f5af0 --- /dev/null +++ b/lib/src/builders/preview/grid_color.dart @@ -0,0 +1,8 @@ +import 'dart:ui'; + +class GridColor { + final Color light; + final Color dark; + + GridColor({required this.light, required this.dark}); +} diff --git a/lib/src/builders/preview/preview_dummy_basic.dart b/lib/src/builders/preview/preview_dummy_basic.dart index 63899e2..1232eb7 100644 --- a/lib/src/builders/preview/preview_dummy_basic.dart +++ b/lib/src/builders/preview/preview_dummy_basic.dart @@ -30,7 +30,6 @@ class PreviewDummyBasic extends StatelessWidget { clipBehavior: Clip.hardEdge, child: Container( padding: const EdgeInsets.all(15), - color: Colors.white, constraints: const BoxConstraints( maxWidth: 400, ), diff --git a/lib/src/builders/preview/preview_dummy_device.dart b/lib/src/builders/preview/preview_dummy_device.dart index 9287edd..b50a049 100644 --- a/lib/src/builders/preview/preview_dummy_device.dart +++ b/lib/src/builders/preview/preview_dummy_device.dart @@ -39,7 +39,6 @@ class PreviewDummyDevice extends StatelessWidget { clipBehavior: Clip.hardEdge, child: Container( padding: const EdgeInsets.all(15), - color: Colors.white, constraints: const BoxConstraints( maxWidth: 400, ), @@ -72,7 +71,7 @@ class PreviewDummyDevice extends StatelessWidget { device: deviceInfo, orientation: dummy.device.orientation, screen: Container( - color: dummy.device.backgroundColor, + color: Theme.of(context).colorScheme.surface, child: Builder( builder: (context) { return Padding( diff --git a/lib/src/extensions/string_ext.dart b/lib/src/extensions/string_ext.dart index f2e226d..9cbee93 100644 --- a/lib/src/extensions/string_ext.dart +++ b/lib/src/extensions/string_ext.dart @@ -18,4 +18,10 @@ extension StringExt on String { } return './$this'; } + + String toClassName() { + return split('_') + .map((word) => word[0].toUpperCase() + word.substring(1)) + .join(); + } } diff --git a/lib/src/utils/svg.dart b/lib/src/utils/svg.dart index 0482f24..44614de 100644 --- a/lib/src/utils/svg.dart +++ b/lib/src/utils/svg.dart @@ -211,6 +211,8 @@ class SvgImageKey { other.pixelHeight == pixelHeight && other.scale == scale && other.source == source && + other.foregroundColor == foregroundColor && + other.backgroundColor == backgroundColor && other.svgGetter == svgGetter; } diff --git a/pubspec.yaml b/pubspec.yaml index b85049c..f5d7932 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: catalog description: A Flutter package to render widgets in real time and generate screenshots for fastlane. -version: 2.0.0 +version: 2.1.0 homepage: https://landamessenger.com/ repository: https://github.com/landamessenger/catalog