Flutter 3.32 brings an exciting array of new features and improvements that enhance developer productivity, improve UI fidelity, and expand platform capabilities. In this detailed guide, we’ll explore each of these new features with rich examples and practical applications.
Table of Contents
Cupertino Library Enhancements
Null-Aware Collection Elements
FFIgen and JNIgen Early Access

Desktop Maturity
Flutter’s desktop support has reached a new level of maturity in version 3.32, making it robust enough for shipping fully-featured desktop applications.
Key improvements:
- Improved accessibility features
- Multi-window support (with contributions from Canonical)
- Enhanced text rendering across Windows, macOS, and Linux
- Better high-DPI display support
Cupertino and Material Improvements
Material Library Enhancements
Flutter 3.32 brings significant improvements to the Material library with new features and bug fixes:
CarouselController Improvements
final carouselController = CarouselController();
void animate(int index) => carouselController.animateToItem(
index,
duration: Duration(milliseconds: 500),
curve: Curves.easeInOut,
);
Enhanced TabBar Callbacks
TabBar(
tabs: [...],
onHover: (index, isHovered) {
// Custom hover effects
setState(() => hoverStates[index] = isHovered);
},
onFocusChange: (index, hasFocus) {
// Custom focus effects
setState(() => focusStates[index] = hasFocus);
},
)
SearchAnchor Improvements
SearchAnchor(
builder: (BuildContext context, SearchController controller) {},
suggestionsBuilder:
(BuildContext context, SearchController controller) {},
viewOnOpen: () {
// Track when search opens
},
// ... other parameters
),
SearchAnchor.bar(
onOpen: () {
// Track when search opens
},
suggestionsBuilder:
(BuildContext context, SearchController controller) {},
// ... other parameters
),
Custom Calendar Systems
CalendarDatePicker(
calendarDelegate: CustomCalendarDelegate(),
// ... other parameters
)
class CustomCalendarDelegate extends CalendarDelegate {
@override
int daysInMonth(int year, int month) {
return month.isEven ? 21 : 28; // Custom calendar logic
}
@override
int firstDayOfWeek(int year, int month) {
return DateTime.monday; // All months start on Monday
}
}
Other Material Improvements
// Custom dialog animations
showDialog(
context: context,
animationStyle: AnimationStyle(
curve: Curves.bounceOut,
duration: Duration(milliseconds: 700),
),
// ... other parameters
);
// Custom divider styling
Divider(
thickness: 8,
borderRadius: BorderRadius.circular(4),
)
Material Bug Fixes
- Slider thumbs can now reach track ends with transparent tracks
- DropdownMenu now properly handles narrow widths
- RangeSlider thumb hover states fixed

Cupertino Library Enhancements
Squircles (Rounded Superellipses)
// Custom clipping
ClipRSuperellipse(
borderRadius: BorderRadius.circular(16),
child: Image.network('...'),
),
// Low-level drawing
CustomPaint(
painter: SuperellipsePainter(),
)
class SuperellipsePainter extends CustomPainter {
@override
void paint(Canvas canvas, Size size) {
final paint = Paint()..color = Colors.blue;
canvas.drawRSuperellipse(
RSuperellipse.fromRectAndRadius(
Rect.fromLTWH(0, 0, size.width, size.height),
Radius.circular(50), // radius
),
paint,
);
}
@override
bool shouldRepaint(covariant CustomPainter oldDelegate) {
return false;
}
}
Sheet Improvements
// Disabling drag-to-dismiss
showCupertinoSheet(
context: context,
enableDrag: false, // New parameter
pageBuilder: (BuildContext context) {
},
);
Sheet Fixes:
- Fixed PopupMenuButton compatibility
- Correct system UI theming on Android
- Fixed navigation bar height issues
- Improved corner radius transitions
Navigation Bar Improvements
CupertinoSliverNavigationBar(
largeTitle: Text('Messages'),
trailing: CupertinoSearchTextField(),
// Improved search animation fidelity
)
Navigation Fixes:
- Updated route transitions to match latest iOS behavior
- Correct search field icon alignment
Digit Separators in Dart
Dart 3.6 introduced digit separators using underscores (_
) to improve readability of numerical literals.
Before:
var v1 = 1000000; // Hard to read
var v2 = 0x0001422012345; // MAC address
var v3 = 5551234567; // US phone number
After:
var v1 = 1_000_000; // Clearly one million
var v2 = 0x00_14_22_01_23_45; // Grouped MAC address
var v3 = 555_123_4567; // Standard phone number format
Dot Shorthand for Enums
A future release will introduce dot shorthand for enums, reducing verbosity in code.
Before:
Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
mainAxisSize: MainAxisSize.min,
children: [...],
);
After:
Column(
crossAxisAlignment: .stretch, // Much cleaner!
mainAxisSize: .min,
children: [...],
);
Wildcard Variables
Dart 3.7 improves handling of intentionally unused variables with wildcards.
Before:
ListView.builder(
itemBuilder: (_, __) => ListTile(title: Text('foo'))
)
After:
ListView.builder(
itemBuilder: (_, _) => ListTile(title: Text('foo'))
);
The new syntax makes it clearer when variables are intentionally ignored.
Flutter Property Editor

A new IDE-integrated tool simplifies widget property editing and documentation access.
Features:
- Easy theme mode selection
- Instant access to all widget properties
- Built-in documentation
- Default value indicators

Null-Aware Collection Elements
Dart 3.8 introduces null-aware elements for cleaner collection building.
Before:
Stack(
children: [
const AbsorbPointer(),
if (widget.child != null) widget.child!,
],
)
After:
Stack(
children: [
const AbsorbPointer(),
?widget.child, // Much more concise!
],
)
FFIgen and JNIgen Early Access
Plugin authors can now test new codegen solutions that bridge Dart directly to native code:
- FFIgen: For C/C++ interop
- JNIgen: For Java/Kotlin interop
Benefits:
- Eliminates the need for method channels
- Improved performance
- Type safety
Example FFIgen usage:
// Native function
@Native('sqrt')
external double sqrt(double x);
void main() {
print(sqrt(16.0)); // Directly calls native sqrt function
}
Web Hot Reload (Experimental)

Faster web development iterations are now possible with the experimental hot reload flag:
flutter run -d chrome --web-experimental-hot-reload
Current capabilities:
- Early-stage feature with ongoing improvements
- State preservation during reload
- Faster refresh cycles compared to full restart
Conclusion
Flutter 3.32 delivers significant improvements across the framework:
- Desktop is now production-ready
- UI fidelity reaches new heights with squircles and Material 3
- Dart language becomes more expressive with digit separators, enum shorthand, and null-aware elements
- Tooling improves with the Property Editor
- Native interop gets easier with FFIgen/JNIgen
- Web development becomes more efficient with experimental hot reload
These features collectively make Flutter 3.32 the most productive and capable version yet for building beautiful, native applications across all platforms from a single codebase.
Upgrade today and start leveraging these powerful new capabilities in your Flutter applications!