See also: Flutter's code of conduct
For an introduction to contributing to Flutter, see our contributor guide.
For specific instructions regarding building Flutter's engine, see Setting up the Engine development environment on our wiki. Those instructions are part of the broader onboarding instructions described in the contributing guide.
The Flutter engine follows Google style for the languages it uses:
- C++
- Note: The Linux embedding generally follows idiomatic GObject-based C style.
Use of C++ is discouraged in that embedding to avoid creating hybrid code that
feels unfamiliar to either developers used to working with GObject or C++ developers.
E.g., do not use STL collections or std::string. Exceptions:
- C-style casts are forbidden; use C++ casts.
- Use
nullptr
rather thanNULL
. - Avoid
#define
; for internal constants usestatic constexpr
instead.
- Note: The Linux embedding generally follows idiomatic GObject-based C style.
Use of C++ is discouraged in that embedding to avoid creating hybrid code that
feels unfamiliar to either developers used to working with GObject or C++ developers.
E.g., do not use STL collections or std::string. Exceptions:
- Objective-C (including Objective-C++)
- Java
C/C++ and Objective-C/C++ files are formatted with clang-format
, and GN files with gn format
.
Googlers contributing to Fuchsia should follow the additional steps at: go/flutter-fuchsia-pr-policy.