Call us USA (+1)312-698-3083 | Email : sales@wappnet.com

What’s new in Flutter 3.27

Introduction

Flutter 3.27 guarantees that your applications are not only visually appealing but also operate smoothly on various platforms. Whether you’re an experienced Flutter professional or just starting your app development path, Flutter 3.27 introduces numerous features designed to improve your workflow, increase productivity, and enhance your app’s user experience. This blog examines the latest features and their ability to enable developers to create and launch superior applications effectively. Uncover how Flutter 3.27 can change your application development and delivery workflow!

Framework Enhancements

Cupertino Widget Updates:

  • CupertinoCheckbox & CupertinoRadio:
    These widgets have been refined with updated sizes, colors, stroke widths, and press behaviors. They now offer increased customization options, including properties for mouse cursors, semantic labels, thumb images, and fill colors. Deprecated properties, such as the inactive color of CupertinoCheckbox, have been removed, and others have been renamed for consistency.
  • CupertinoSlidingSegmentedControl:
    Improvements include adjustments to thumb radius, separator height, padding, shadows, and thumb scale alignment. It now supports disabling individual segments and offers proportional layouts based on segment content.

CupertinoSlidingSegmentedControl

  • CupertinoNavigationBar & CupertinoSliverNavigationBar: Thanks to a community contribution, these navigation bars now feature transparent backgrounds until content is scrolled underneath, allowing for seamless color transitions between expanded and collapsed states.

  • CupertinoButton: This update includes the CupertinoButtonSize enum and sizeStyle property, which enable iOS 15+ button styles. A new CupertinoButton.tinted constructor supports buttons with translucent backgrounds. Support for onLongPress handlers and keyboard shortcuts has been introduced.

CupertinoButton

  • CupertinoPicker & CupertinoDatePicker: Enhanced to allow scrolling directly to tapped items, improving user interaction.

  • CupertinoAlertDialog: Now supports the tap-slide gesture, providing a more intuitive user experience.

Material Theming Normalization

  • CardTheme, DialogTheme, and TabBarTheme have been refactored to align with Flutter’s component theming conventions. New data classes (CardThemeData, DialogThemeData, TabBarThemeData) facilitate easier customization of default visual properties.

CarouselView Enhancements:

  • The new CarouselView.weighted enables dynamic layouts inside carousels. By altering the flexWeights option, developers may modify the relative size and location of items, allowing for layouts such as multi-browse, hero, and centered-hero setups.

Additional Features and Fixes

  • SegmentedButton:
    Introduces a direction property for vertical alignment.
  • ButtonStyleButton Classes:
    Enhanced with additional icon-related properties in the styleFrom method for improved customization.
  • AppBar:
    The scroll-under behavior now persists when the navigation drawer is opened, ensuring consistent UI behavior.
  • MenuAnchor:
    Improved focus management and resolution of several DropdownMenu issues enhance user interaction.

Route Transition Flexibility

  • With exit transition builders, synchronized entry and exit transitions are now possible thanks to ModalRoutes’ support for various page transitions.

Text Selection Improvements

  • SelectionArea:
    Supports Shift + Click gestures on Linux, macOS, and Windows, enhancing text selection capabilities.
  • RenderParagraph:
    Enhanced text selection behavior while interacting outside of the text area and following window resize.

Row and Column Spacing

  • New spacing parameters in Row and Column widgets allow for offsetting children, reducing code complexity and enhancing layout flexibility.

// Before
Row(
children: [
MyWidget(),
SizedBox(width: 10),
MyWidget(),
SizedBox(width: 10),
MyWidget(),
SizedBox(width: 10),
MyWidget(),
],
);

Or

List<Widget> children = [ MyWidget(), MyWidget(), MyWidget(), MyWidget(),];
Column(
children: children.expand((Widget child) sync* {
yield const SizedBox(height: 10.0);
yield child;
}).skip(1).toList(),
);

// After
Row(
spacing: 10,
children: [
MyWidget(),
MyWidget(),
MyWidget(),
MyWidget(),
],
);

Column(
spacing: 10,
children: [
MyWidget(),
MyWidget(),
MyWidget(),
MyWidget(),
],
);

Engine Enhancements

 

  • Impeller on Android:
    Impeller is now the default rendering engine on modern Android devices, offering improved performance. If needed, developers can switch back to the Skia renderer. 

iOS Improvements

iOS Improvements

  • Metal Rendering Surface:
    A new implementation provides more consistent raster workloads and stable frame times, enhancing performance on iOS devices.
  • DisplayP3 Color Space:
    Support for defining UIs with colors in the DisplayP3 color space allows for richer color representation on compatible iOS devices.

Web Enhancements

  • All Flutter app development plugins and packages are now compatible with WebAssembly, broadening deployment options. Accessibility improvements address issues with headings, dialogs, passwords, iOS keyboards, links, and scrollables. Drag scrolling has been improved in multi-view mode, and platform views have been optimized to reduce canvas overlays. Additionally, image decoding now utilizes the <img> element in Safari and Firefox for static images, enhancing performance

iOS Specific Updates

  • Swift Package Manager Support:
    Flutter plugins may now use Swift packages, decreasing reliance on Ruby and CocoaPods while simplifying dependency management.

Android

Edge to Edge

  • Edge-to-Edge Mode:
    Automatically activated on devices with Android 15 and above, allowing apps to operate in full screen.

Support for Freeform

  • Android Freeform:
    Lets users adjust the size of app windows, accessible as a developer setting.

Kotlin Build Script Support

  • Kotlin Build Files:
    Enhanced support for build.gradle.kts files and declarative plugin migration to improve type safety and maintainability.

Ecosystem
Flutter and Dart Package Ecosystem Summit USA 2024

  • Sessions:
    Topics included Swift Package Manager support, native interop, and sustainable package maintenance models.

Package Download Counts on pub.dev

Package Download Counts on pub.dev

  • Download Metrics:
    An interactive sparkline graphic for package consumption patterns and a new 30-day download count have been included.

Pub Workspaces

  • Monorepo Support:
    Launching with Dart 3.6 to support multiple related packages in one repository.

Automated Publishing from GitHub

  • GitHub Actions: expanded to enable Flutter packages to be automatically published to pub.dev.

Plugin for Interactive Media Ads

  • IMA Plugin:
    Integrates multimedia ads into iOS and Android apps with features like linear instream video ad requests and skippable ads.

In-App Purchase Plugin Updates

  • StoreKit 2 Support:
    included into the in_app_purchase_storekit package to improve the administration of subscriptions.

DevTools and IDEs

Flutter DevTools Updates

Flutter DevTools Updates

  • iOS Deep Link Validation:
    Added support for validating deep links for Android and iOS.
  • Offline Data Workflow:
    Support for exporting network data as .har files and loading memory snapshots for offline viewing.
  • New Flutter Inspector:
    The reduced widget tree, inline layout viewer, and flex layout explorer have all increased usability.

Previews and Experimental Features

  • WebAssembly DevTools: Enable for better performance than the default JS-compiled version.

Previews and Experimental Features

Breaking Changes and Deprecations

  • Material Design 3 Tokens:
    Updated to v6.1 for more visually appealing color roles in Light mode.
  • Objective-C iOS Projects:
    Deprecated, with future removal of the –ios-language objc flag.
  • Deep Link Default Flag:
    Changed to true, making deep linking opt-in by default.

Deprecated TextField.canRequestFocus:

TextField.canRequestFocus is deprecated. The same functionality can be achieved by setting the canRequestFocus parameter of the TextField’s FocusNode.

  • Older SDK Support:
    Deprecating support for Dart SDK versions older than 3.0 (released in May 2023), with removal in Dart 3.7.

Conclusion

The entire list of migration recommendations for this release’s breaking changes can be found on the breaking changes page.

Ready to take your Flutter app to new heights? Contact us or email us for assistance today.

Ankit Patel
Ankit Patel
Ankit Patel is the visionary CEO at Wappnet, passionately steering the company towards new frontiers in artificial intelligence and technology innovation. With a dynamic background in transformative leadership and strategic foresight, Ankit champions the integration of AI-driven solutions that revolutionize business processes and catalyze growth.

Related Post