Repository: flutter
Issue: Single unified config aggregator
Labels: c: new feature,tool,c: proposal,P3,team-tool,triaged-tool

<!-- Thank you for using Flutter!

     If you are looking for support, please check out our documentation
     or consider asking a question on Stack Overflow:
      * https://flutter.dev/
      * https://api.flutter.dev/
      * https://stackoverflow.com/questions/tagged/flutter?sort=frequent

     If you have found a bug or if our documentation doesn't have an answer
     to what you're looking for, then fill out the template below. Please read
     our guide to filing a bug first: https://flutter.dev/docs/resources/bug-reports
-->

## Use case

<!--
     Please tell us the problem you are running into that led to you wanting
     a new feature.

     Is your feature request related to a problem? Please give a clear and
     concise description of what the problem is.

     Describe the alternative solutions you've considered. Is there a package
     on pub.dev/flutter that already solves this?
-->

When developing a cross-platform app using Flutter, updating the app's version number, permissions, icons, splash screens, and package/bundle names for both iOS and Android can be time-consuming and labor-intensive, as they need to be managed separately for each platform. This can cause inefficiencies and increase the chance of errors in the development process. It also makes it difficult to keep track of the differences between the two platforms, maybe even more than two!

## Proposal

<!--
     Briefly but precisely describe what you would like Flutter to be able to do.

     Consider attaching something showing what you are imagining:
      * images
      * videos
      * code samples

     Does this have to be provided by Flutter directly, or can it be provided
     by a package on pub.dev/flutter? If so, consider implementing and
     publishing such a package rather than filing a bug.
-->

I propose the development of a unified config file to simplify the management of version information, permissions, icons, splash screens, and package/bundle names across multiple platforms such as iOS, Android, MacOS, Windows, etc. This file would enable developers to efficiently manage all of these settings in one central location, eliminating the need to update them separately for each platform. Additionally, it would make it easy to keep track of variations between platforms, reducing the potential for errors.

The config file could be in a format such as JSON or YAML and include fields for each of the settings that need to be managed, such as app version, package name, and icon file path. This file would be placed in the project's root directory and the build process would automatically read from it to update the relevant files for each platform.

For example, let's say that you are developing a cross-platform app using Flutter that requires access to a user's photos. Currently, in order to add this permission, you would need to update the AndroidManifest.xml file for Android and the Info.plist file for iOS separately. This can be a time-consuming and error-prone process, especially if you are working with multiple developers on the same project.

With a unified config file, you would simply add a field in the config file for "photo access permission" and set it to "true" or "false" depending on whether or not the app needs to access the user's photos. Additionally, you can also have a field for the permission description that will be displayed to the user when the app requests access to the user's photos, this would make it more transparent and user-friendly.

This feature would significantly save time and reduce the chance of errors during development, making it easier for developers to maintain cross-platform apps using Flutter. It would also make it much simpler for new developers to update the config for each platform without the need to navigate through each platform individually.

It is worth noting that some of the information listed, such as the version and icons, are already present in `pubspec.yaml` or with flutter packages from pub.dev. However, my proposal suggests a unified interface for all config that can be generated by the flutter cli, which would scan each platform folder and output all configs. This can be further enhanced with a UI extension in VSCode, to make it more convenient for developers to update the config file for all platforms or to assign different values for specific configurations on different platforms. This config file can be generated from an existing project or updated and applied to a new project.

This can also allow developers to share their config in tutorials or in a package on pub.dev.

This might be a lot but since iOS, Andriod, etc platforms configs do not change that frequently the benefits might outway the cost of developing such a thing.