Pros
Cross platform
Flutter allows for out of the box cross-platform development, it's really useful for rapidly prototyping an app in order to create an MVP. But it's definitely also a valid option to develop a small to medium scale mobile app ready for prime time.
Strongly typed
Flutter is working with Dart, a strongly typed language, which is much better for collaborating in teams to ensure variable assignments match their static types. Even though this brings a bit of extra work compared to for example react native, it's less prone to produce unpredictable results at runtime.
Development perks
- Very fast hot reload, with minimal delay. The stateful hot reload is really awesome, you don’t need to lose your widget’s state when hot reloading
- Ahead-of-time (AOT) on production and just-in-time (JIT) on development mode makes developing the app feel seamless
- Awesome VScode support
- The named optional parameter is really useful, you can specify multiple optional parameters on the function definition, and call it by passing object-like parameters to the function/class
// definition:
AppNotificationItem({@required this.notification, this.index, @required this.onSelect})
// usage:
AppNotificationItem({ notification: notification, onSelect: onSelect });
Extensive Widget library
Flutter comes with a huge widget library out of the box. It's very easy to extend a widget, or to compose new widgets based on mixing multiple default flutter widgets. This gives us less compability issues to think about, Flutter’s widgets will work mostly for both platform. No need to scavange the internet for useful packages.