Thanks to be intresting in contribute with the porject. This Guide will assume that you know Git and know the GitHub workflow. If you want to know more, see this firstcontributions's repo. This Guideline will show how the project is currently working and explain the arcthecture to be easier to contribute to.
We are always needing help to:
- See the open issues.
- We still don't have a logo or visual identity.
- Improve the design of pages or widgets.
- Improve the code architecture.
- Improve performance and decrease memory consumption (memory leak).
You can contribute to the project it self, scripts or visual identity.
- assets: Images and fonts useed in the project.
- images: Screenshots useed in the README.
- lib: The project code it self.
- tools: The scripts useed to get informations consumed by the xbox_launcher.
- controllers: The controllers/services used globaly on the xbox_launcher, like file picker, keyboard and controller inputs manager and the xbox_launcher's System Apps information.
- models: The object models, the JSON serialization/deserialization are made on the respectly model. Here satay the models of the providers (including the profile's preferences models), patterns, Games and Apps.
- pages: The pages's interface code are here, including the navigation sections and exclusive widget (used only in that page).
- providers: The project use provider to manage the controller and keyboard keybinding and the profile information, the profile_provider uses shared_preferences to get the last used profile by the id and load it with profile_loader.
- The ProfileModel is private, so every propertie that must to be public need to have a Getter and Setter, the setter need to call
notifyListeners()
andsaveProfile()
, if the change affect all profiles or add/remove a profile, is recommended to callsaveProfiles()
to save the changes for all profiles.
- The ProfileModel is private, so every propertie that must to be public need to have a Getter and Setter, the setter need to call
- routes: Here is the routes for every page in the xbox_launcher.
- shared: The enums, app's constants (colors, directories, images from assets) and all the own widgets are here. Some widgets here are based on the fluent_ui widgets.
It's important to made a readable code, so before to send a pull request check the code style.
This code fallow the Effective Dart: Style. But some exceptions are applyed to this project:
- If the
if
statment have only one instruction, the curly braces must to be ignored. Addon the top of the file.// ignore_for_file: curly_braces_in_flow_control_structures
- The name of constants (
const
) must to be in uppercase://Add this line on the top of the file. // ignore_for_file: constant_identifier_names static const Color DARK_BG = Color.fromRGBO(40, 39, 41, 1);
Any thing else there is not in the exceptions need to fallow the Effective Dart: Style.
The Python's script must to fallow the PEP 8 style.
Some parts of the code don't fallow the convetions mentioned above, so fell free to format the code.