conectar_design_system 1.1.16 copy "conectar_design_system: ^1.1.16" to clipboard
conectar_design_system: ^1.1.16 copied to clipboard

unlisted

Conectar Design System - Biblioteca completa de componentes reutilizáveis para Flutter com showcase interativo e suporte multiplataforma

Changelog #

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

1.1.16 - 2026-06-15 #

Added #

  • MyTable: switch from paginated to infinity scroll stategy.
  • MyFilterView: Add padding property and remove buttons horizontal padding form small screens

1.1.15 - 2026-06-03 #

Fixed #

  • MyMultiSelectDropdownFormFieldV2: Adjusted dropdown search to filter items properly.

1.1.14 - 2026-06-01 #

Added #

  • MyDropdownFormFieldV2: New component for dropdown.
  • MyMultiSelectDropdownFormFieldV2: New component for multi-select dropdown.

🔧 Fixed #

  • MyTextFormField: Change label padding to keep a pattern with others fields widgets.

1.1.13 - 2026-05-29 #

Added #

  • AppWidget: Add title parameter to AppWidget for customizable app title

1.1.12 - 2026-05-26 #

Added #

  • MyTable: Add disabled and cellTootip properties in MyTableAction.
  • MyTextFormFields: Add onSaved, onFiledSubmitted and autofillHints properties in MyTextFormFields.
  • MyDebouncedTextFormField: Add autofillHints property in MyDebouncedTextFormField.
  • MyCurrencyTextFormField: Add autofillHints property in MyCurrencyTextFormField.
  • MySeachField: Add autofillHints property in MySeachField.
  • Example Project: Update tables showcase with latest changes.

🔧 Fixed #

  • MyText: Remove default value for textColor, so it can use the Theme's default color.
  • MyTable: Fix total items count for pagination.

1.1.11 - 2026-05-18 #

Added #

  • Components: Add MyTable widget and deprecated MyTableView.
  • Dependencies: Add Skeletonizer to create shimmer effect in loading states.
  • Example Project: Add Tables showcase page.

🔧 Fixed #

  • Cleaning: Remove unused property getKeyin the AppWidget.

1.1.10 - 2026-05-11 #

Added #

  • Styles: Add ConectarColors singleton and a apply more robust ThemeData in MaterialApp.
  • Components: Add MyResponsiveGrid widget
  • Example Project: Add a colors showcase page.
  • Utils: Add a utility class to show SnackBars.
  • Network: Add interceptors property for our http client.

1.1.9 - 2026-04-24 #

Added #

  • Logger Control: Introduced showLogsOnWeb property in ConectarSettings to allow disabling console logs specifically on the Web platform.
  • Logger Update: Updated Logger to honor the showLogsOnWeb flag, improving developer control over console output in web environments.

🔧 Fixed #

  • Sensitive Data Logging: Implemented _sanitizeData in ApiConnector to automatically redact sensitive information (passwords, tokens, secrets) from request and response logs in the terminal.

1.1.8 - 2026-04-24 #

🔧 Fixed #

  • MyMultiSelectDropdownFormField (lib/components/my_multi_select_dropdown_form_field.dart): Corrigida a seleção/deseleção para itens genéricos com comparação consistente (incluindo BaseModel.internalId), evitando inconsistências quando o item não é a mesma instância em memória.
  • MyMultiSelectDropdownFormField (lib/components/my_multi_select_dropdown_form_field.dart): Ajustada a remoção de itens selecionados para usar correspondência lógica em vez de igualdade por referência.
  • MyMultiSelectDropdownFormField (lib/components/my_multi_select_dropdown_form_field.dart): Melhorada a sincronização de estado do dropdown e do FormField com fluxo unificado de atualização (didChange + onChanged), reduzindo risco de estados intermediários inconsistentes.
  • MyTableView (lib/components/table_view/my_table_view.dart): Adicionado controle de ordenação ativa (hasActiveSort) para considerar estado visual de ordenação apenas quando a direção não é SortDirection.none.
  • MyTableView (lib/components/table_view/my_table_view.dart): Ajustado getSortColumnIndex() para retornar null quando não há ordenação ativa, removendo indicador visual residual da coluna após o ciclo completo de ordenação.
  • TableBuilders (lib/components/table_view/widgets/table_builders.dart): Ajustado destaque visual do cabeçalho (isCurrentSortColumn) para refletir apenas colunas com ordenação realmente ativa.

🛠️ Changed #

  • MyMultiSelectDropdownFormField (lib/components/my_multi_select_dropdown_form_field.dart): Itens do menu e opção "Selecionar todos" agora suportam clique na linha inteira (InkWell) com checkboxes mantendo comportamento de multiseleção.
  • MyMultiSelectDropdownFormField (lib/components/my_multi_select_dropdown_form_field.dart): Itens do DropdownMenuItem foram marcados como desabilitados para prevenir comportamento padrão de seleção única e preservar a experiência de multiseleção.

1.1.7 - 2026-04-10 #

Added #

  • Table Sorting: Introduced SortDirection enum and TableSort class in table_models.dart for flexible table sorting logic.
  • Table Actions: Added TableAction<T> class to support custom row actions with tooltips and enabled state.
  • TableBuilders Extension: Added/extended TableBuilders<T> extension in table_builders.dart for MyTableViewState<T>, providing modular methods for building headers, columns, rows, actions, and pagination.

🛠️ Changed #

  • Table Component: Enhanced table building logic with dynamic columns, custom cell builders, row selection, sorting, and action menus. Improved support for custom and popup menu actions per row, and added pagination widget for navigation.

📚 Documentation #

  • Updated internal documentation for table components to reflect new sorting and action features.

1.1.6 - 2026-03-26 #

Added #

  • EmailValidator: Novo validador dedicado para e-mail em lib/validators/email_validator.dart, com suporte a campo obrigatório e mensagens padronizadas do design system.
  • RequiredFieldValidator: Novo validador para campos obrigatórios em lib/validators/required_field_validator.dart, garantindo validação consistente de valores não vazios.
  • String Extension: Novo método isTimeBeforeOther(String otherTime) para comparação segura de horários no formato HH:mm.

🛠️ Changed #

  • MyLabelFormFieldText: Adicionado parâmetro maxLines para permitir labels multilinha com truncamento controlado.
  • MyTextFormField: Suporte a labelMaxLines, subLabelMaxLines e autovalidateMode, além de migração para StatefulWidget com debounce no onChanged.
  • MyCurrencyFormField: Suporte a labelMaxLines, subLabel, sublabelMaxLines e autovalidateMode.
  • MyDrowdownFormField: Suporte a labelMaxLines, subLabel, subLabelMaxLines e autovalidateMode.
  • MyMultiSelectDropdownFormField: Suporte a labelMaxLines e configuração de autovalidateMode.
  • MyCheckboxGroup: Novo parâmetro optionsMaxLines para controle da quebra de texto nas opções.
  • MyRadioOptions: Evoluído para FormField, com suporte nativo a validator, required, autovalidateMode e titleMaxLines.
  • MyRow: Adicionadas opções de customização do Wrap (wrapAlignment, wrapRunAlignment, wrapCrossAxisAlignment, wrapSpacing, wrapRunSpacing).
  • Validators Index: Adicionada exportação de RequiredFieldValidator em lib/validators/index.dart para simplificar importações.
  • BaseResponse: Atualizado método toString() em lib/models/base_response.dart para representação textual mais clara.

🔧 Fixed #

  • MyCheckboxGroup: Melhorado feedback visual de erro (cor da borda do checkbox e texto das opções) e ajuste de layout do label para melhor adaptação.
  • MyRadioOptions: Melhorado comportamento de seleção e exibição de erro de validação em estado de formulário.
  • Web Compatibility: Ajustados métodos de armazenamento em lib/conectar_design_system_web.dart para compatibilidade no ambiente Web.

0.1.3 - 2025-10-23 #

🔧 MAINTENANCE RELEASE - Development Tools & Component Enhancements #

Added #

  • VsCode Settings: Added VsCode launch.json and settings.json.
  • MyLabelFormFieldText Widget: Component to isolate a label widget for all FormFields widgets.

🛠️ Changed #

  • MyDrowdownFormField: Work without Basemodel data
    • Remove BaseModel from generics
    • Maintain support for MaseModel data
    • Add itemLabelBuilder property in MyDrowdownFormField for custom labels

🔧 Fixed #

  • Layout: Fix DropdownField and the label of some FormField widget to break within small screens

0.1.2 - 2025-10-20 #

🔧 MAINTENANCE RELEASE - Development Tools & Component Enhancements #

Added #

  • FVM Support: Added Flutter Version Management (FVM) configuration
    • Created .fvmrc file to specify stable Flutter channel
    • Added .fvm/ directory to .gitignore for version cache management
    • Configured VS Code settings to use FVM Flutter SDK path

🛠️ Changed #

  • MyRow Component: Enhanced flexibility with layout alignment options
    • Added mainAxisAlignment parameter with default value MainAxisAlignment.spaceBetween
    • Added crossAxisAlignment parameter with default value CrossAxisAlignment.center
    • Maintains backward compatibility with existing implementations

🔧 Fixed #

  • Dependencies: Corrected youtube_player_flutter dependency format in pubspec.yaml
    • Changed from object notation to standard version string format
    • Ensures proper package resolution and compatibility

0.1.1 - 2025-07-15 #

🚀 SIMPLIFIED ARCHITECTURE RELEASE - MyImagePicker Revolution #

Added #

  • MyImagePicker: Complete rewrite using native image_picker package
    • 📸 Native camera support for all platforms
    • 🖼️ Gallery selection with modern UI
    • 🗑️ Delete/clear functionality
    • 📱 Platform-specific optimizations (Android Photo Picker on 13+, PHPicker on iOS 14+)
    • 🎨 Beautiful preview with image info overlay
    • 📐 Responsive layout with safe constraints
  • New API: Modern XFile return type instead of dynamic
  • Enhanced UX: Tooltips, loading states, and user feedback
  • Testing: Comprehensive test suite (6/6 tests passing)

🔧 Fixed #

  • CRITICAL: Removed complex conditional imports system that was causing build issues
  • Layout: Fixed infinite height constraints in MyImagePicker container
  • Performance: Eliminated unused _webImage field warnings
  • Build: Web builds now work flawlessly (20.5s compile time)
  • Compatibility: 100% compatibility with image_picker 1.1.2 across all platforms

🗑️ Removed #

  • Breaking: Removed complex conditional imports system
    • conditional_imports.dart
    • conditional_imports_stub.dart
    • conditional_imports_mobile.dart
    • conditional_imports_web.dart
  • Simplified: No more platform abstraction layers for image picking
  • Cleaner: Removed debug conditional imports page

📈 Performance #

  • Code Reduction: 70% less code in MyImagePicker implementation
  • Build Speed: Faster compilation across all platforms
  • Memory: Reduced memory footprint with native implementations
  • Bundle Size: Smaller app bundles due to tree-shaking

🎯 Migration Guide #

// OLD API (deprecated)
onImageSelected: (dynamic image) { ... }

// NEW API (recommended)
onImageSelected: (XFile? image) {
  final path = image?.path;
  final name = image?.name;
}

0.1.0 - 2024-12-19 #

🎉 MAJOR STABILITY RELEASE - Full Platform Compatibility #

🔧 Fixed #

  • CRITICAL: Fixed image_picker_web causing dart:html is not available errors on iOS/Android
  • CRITICAL: Resolved "Unexpected null value" errors from Get.width in MyBaseCard and MyDropdownFormField
  • UI: Fixed 536-pixel layout overflow in GridView with responsive design
  • UI: Fixed 587-pixel overflow in MyDropdownFormField selectedItemBuilder
  • UI: Fixed dropdown assertion failures in MyMultiSelectDropdownFormField
  • Build: Fixed iOS build failures due to platform-specific dependencies
  • Build: Fixed Android build issues with integration_test dependency

Added #

  • Platform Utils: New PlatformUtils class for safe platform detection
  • Platform Config: New PlatformConfig class with platform-specific configurations
  • Showcase App: Complete interactive showcase with 30+ components
  • Documentation: Comprehensive platform compatibility guide
  • Testing: Automated platform compatibility testing script

🚀 Enhanced #

  • Web Compatibility:
    • Uses file_picker instead of image_picker_web
    • Data URLs for image handling
    • localStorage fallback for storage
    • Responsive design improvements
  • iOS Compatibility:
    • Native image picker integration
    • SharedPreferences storage
    • Proper platform-specific APIs
  • Android Compatibility:
    • Native file and image handling
    • Material Design compliance
    • Optimized performance
  • Components:
    • MyImagePicker: Complete rewrite with platform detection
    • MyBaseCard: Removed GetX dependency
    • MyDropdownFormField: Fixed overflow issues
    • All components: Better responsive behavior

🛠️ Changed #

  • BREAKING: Removed Get.width usage - use MediaQuery.of(context).size.width
  • BREAKING: MyImagePicker now uses conditional imports (API unchanged)
  • Dependencies: Removed problematic image_picker_web dependency
  • Architecture: Implemented conditional import pattern for platform safety

📦 Dependencies #

  • Updated web to ^1.0.0
  • Updated url_launcher to ^6.3.0
  • Updated cached_network_image to ^3.4.1
  • Removed image_picker_web (replaced with conditional imports)
  • Organized dependencies by category for better maintainability

🧪 Testing #

  • ✅ Web: All builds passing, components rendering correctly
  • ✅ iOS: All builds passing, native functionality working
  • ✅ Android: All builds passing, Material Design compliance
  • ✅ Cross-platform: Unified APIs working on all targets

📚 Documentation #

  • Added PLATFORM_COMPATIBILITY.md - Comprehensive compatibility guide
  • Added COMPATIBILITY_FIXES_FINAL.md - Detailed fix documentation
  • Added scripts/test_platforms.sh - Automated testing script
  • Updated README with new APIs and usage examples

💡 Migration Guide #

From 0.0.x to 0.1.0:

Replace GetX usage:

// Before (0.0.x)
double width = Get.width;

// After (0.1.0)
double width = MediaQuery.of(context).size.width;
// or
double width = PlatformUtils.getResponsiveWidth(fallbackWidth);

Use new platform utilities:

// Check platform
if (PlatformUtils.isWeb) {
  // Web-specific code
}

// Use conditional services
final imagePicker = ConditionalImagePicker.instance;
if (imagePicker.isSupported) {
  final image = await imagePicker.pickImage();
}

🎯 Platform Support Matrix #

Feature Web iOS Android Status
Core Components Stable
Forms & Validation Stable
Image Picker ⚠️ Limited on Web
File Picker Stable
Storage Stable
Push Notifications Not supported on Web

🏆 Achievements #

  • Zero build errors across all platforms
  • 100% component compatibility on Web, iOS, Android
  • Graceful degradation for platform-specific features
  • Future-proof architecture with conditional imports
  • Developer-friendly APIs with unified interfaces

0.0.39 Previous versions #

  • Legacy releases with platform compatibility issues
  • See git history for details

📞 Support #

For issues related to this release:

  • Check the migration guide above
  • Review PLATFORM_COMPATIBILITY.md for platform-specific setup
  • Run ./scripts/test_platforms.sh to validate your setup
  • Open an issue with platform details

This release marks a major milestone in stability and cross-platform compatibility! 🚀