This package provides easy to implement icons that adjust based on the platform it is running on.
Just replace your ‘Icon(Icons.___)’ with PlatformIcon(PlatformIcons.___) to get platform specific icons.
- On Android, Web or Linux the package will return the matching Material Icon.
- On iOS, iPadOS or MacOS the package will return the matching Cupertino Icon
- On Windows the package will return the matching Fluent UI icons

Why / when to use this package
Making an Flutter app that looks and feels like it was build specifically for the platform it is running on requires a lot of investment in custom widgets. Common things like the right borderradius, fonts and icons can be very annoying thing to repeat. This package is an attempt to simplify icons across platforms.
How to use
The default way of implementing an icon in your Flutter app is by adding: Icon(Icons.nameOfIcon). Just replace this with PlatformIcon(PlatformIcons.nameOfIcon) and add all necessary parameters, these are the same as the normal Icon widget.
class MyWidget extends StatelessWidget {
const Mywidget({super.key});
@override
Widget build(BuildContext context) {
return PlatformIcon(PlatformIcons.settings,
size: 24, // optional
color: Colors.orange, // optional
semanticLabel: "Semantic label", // optional
textDirection: TextDirection.ltr, // optional
shadows: <Shadow>[], // optional
key: key, // optional
);
}
}DartSupported icons
We try to add as many icons as possible to the list, however not all icons in the Cupertino library are in the Material or Fluent library and vice versa. So if an icon is added that has no matching icon in the desired library it will fallback to the Material icon library.
To see a list of all supported icons at this moment, visit https://examples.simplewidgets.dev/#/platform_icons
