bdlukaa / fluent_ui

Implements Microsoft's WinUI3 in Flutter.
https://bdlukaa.github.io/fluent_ui/
BSD 3-Clause "New" or "Revised" License
2.78k stars 434 forks source link

This package seems to be designed for WinUI3 instead of Fluent UI #907

Open FengZi-lv opened 11 months ago

FengZi-lv commented 11 months ago

Hello! @bdlukaa. Thank you so much for providing such a great package to the community.

I noticed that the design guidelines your package follows seem to be WinUI3, not Fluent UI.

There are many differences between Fluent UI and WinUI3. Fluent UI has different versions for different platforms, while WinUI3 is specially designed for Windows.

Here are resources about Fluent UI:

Here are resources about Win UI 3:

Is there any plan to make this package support FluentUI for different platforms? The disparities between them are not substantial, and to support them, it is highly likely that only minor adjustments will be necessary on their existing foundations.

bdlukaa commented 11 months ago

We used to have mobile-related widgets, such as AppBar and BottomNavigationBar, but they were removed/deprecated due to their maintenance cost. They aren't even mentioned in the demo app. Also, I do think that Material and Cupertino already do a good job on having a design language focused on Mobile. And if you look closely to Fluent Android, the controls (radio, checkbox, switch) are substantially the same as Material. The same applies to the Buttons, AppBar, Menus, Avatar and Sheets. The iOS counterpart differs on some parts, specially corners and size, but they are substantially the same as Cupertino. Having different widgets for each platform doesn't seem a thing to be done on this library, but on other libraries (there are already a few out there). The official documentation for these platforms also lack so much documentation, like components (Drawer) and styles.

For the icons, Microsoft limits us a lot on what we can do. It uses the Segoe Fluent Icons Font, but they explicitly say:

You can download the font for use in design and development, but you may not not ship it to another platform.

This means we can not include it in this package because Flutter is cross-platform and there is no guarantee that the developer will only ship it to Windows. It is possible to make a class WindowsIcons that can be used only on Windows, but what about the other platforms the developer may want to ship? It may get exhausting to add conditions to not use windows icons on other platforms (isWindows ? WindowsIcons.... : ...).

Microsoft has the package fluentui_system_icons, which is NOT Windows Icons. The icons' names are somewhat long as well, which may annoy developers (like FluentIcons.access_time_24_regular). I recommend using that package instead of the built-in FluentIcons though.


The current implementation is based on WinUI 3 and uses https://github.com/microsoft/microsoft-ui-xaml/tree/main/dev, WinUI 3 Gallery and https://learn.microsoft.com/en-us/windows/apps/design/controls/ as reference.

FengZi-lv commented 11 months ago

Thank you for your reply. Using Material or Cupertino is indeed a great solution, and maintaining multiple design guidelines at the same time can be a bit troublesome.

ganeshrvel commented 8 months ago

For the icons, Microsoft limits us a lot on what we can do. It uses the Segoe Fluent Icons Font, but they explicitly say:

@bdlukaa does this mean I cannot ship a desktop application which uses fluent_ui to macos and linux? I was aware of their icon licensing restrictions but are the icons in fluent_ui not allowed to be used crossplatform?

bdlukaa commented 8 months ago

The icon set we use on fluent_ui is not Segoe Fluent Icons. We use Segoe MDL2 Assets, which doesn't have restrictions (afaik).