Pakete, Repositories und App-Kategorien suchen

Cover von appkit_ui_element_colors
Paketdetailsv1.0.1

appkit_ui_element_colors

Ein Flutter-Plugin, das AppKits „UI-Element-Farben“ verfügbar macht.

macOS
30-Tage-Downloads
46.600
Likes
0
Pub-Punkte
140

Paket installieren

flutter pub add appkit_ui_element_colors

Paketübersicht

Aus öffentlichen Paketdaten erstellte Orientierung.

Ein Flutter-Plugin für macOS, das Zugriff auf die integrierten UI-Element-Farben von AppKit bietet und eine konsistente native Darstellung in Flutter-Anwendungen auf macOS ermöglicht. Es mappt Systemfarbkonstanten aus dem AppKit-Framework von Apple wie Fensterhintergrund, Steuerelementtönung und Textfarben ab, um eine Übereinstimmung mit den macOS-Designrichtlinien sicherzustellen. Dieses Paket vereinfacht das Thema durch direkten Zugriff auf plattformspezifische Farbwerte ohne manuelle Konfiguration.

Anwendungsfälle

  • Übereinstimmende macOS-System-UI-Asthetik
  • Native aussehende Flutter-Apps auf macOS erstellen
  • Vereinfachung der Thema-Implementierung für macOS
  • Konsistenz mit Systemfarbschemata sicherstellen
  • Entwicklung von plattformübergreifenden Anwendungen mit macOS-spezifischen Stilen

Hauptmerkmale

  • Zugriff auf native UI-Element-Farben von AppKit
  • Nahtlose Integration mit macOS Flutter-Apps
  • Automatische Synchronisierung mit Systemthemen
  • Minimale Einrichtung erforderlich
  • Unterstützt dynamische Farbaktualisierungen

Geeignet für

  • Flutter-Entwickler, die auf macOS abzielen
  • Apps, die native macOS-Visuelle Konsistenz erfordern
  • Designer konzentrierten sich auf die plattformspezifische UI-Fidelity
  • Projekte mit macOS-spezifischer Thematisierung

Hinweise

  • Nur auf die macOS-Plattform beschränkt
  • Abhängig von der verfügbaren AppKit-Unterstützung
  • Kann zusätzliche Behandlung für Dunkelmodusübergänge erfordern
  • Nicht anwendbar auf nicht-macOS-Plattformen

Original-README

Originaler README-Schnappschuss aus dem verknüpften Quell-Repository. Aktuelle Inhalte finden Sie im Repository.

appkit_ui_element_colors

A Flutter plugin that exposes AppKit’s “UI Element Colors” to facilitate the retrieval of standard color objects for use with windows, controls, labels, text, selections and other content in your app.

Screenshot of example project

Screenshot 2023-03-19 at 12 36 03

Getting started

Install this package:

flutter pub add appkit_ui_element_colors

Then import it in your Dart code:

import 'package:appkit_ui_element_colors/appkit_ui_element_colors.dart';

Features

Retrieving UI element colors

The following colors are available:

Available UI Element colors
  • labelColor
  • secondaryLabelColor
  • tertiaryLabelColor
  • quaternaryLabelColor
  • textColor
  • placeholderTextColor
  • selectedTextColor
  • textBackgroundColor
  • selectedTextBackgroundColor
  • keyboardFocusIndicatorColor
  • unemphasizedSelectedTextColor
  • unemphasizedSelectedTextBackgroundColor
  • linkColor
  • separatorColor
  • selectedContentBackgroundColor
  • unemphasizedSelectedContentBackgroundColor
  • selectedMenuItemTextColor
  • gridColor
  • headerTextColor
  • alternatingContentBackgroundColors0
  • alternatingContentBackgroundColors1
  • controlAccentColor
  • controlColor
  • controlBackgroundColor
  • controlTextColor
  • disabledControlTextColor
  • currentControlTint
  • selectedControlColor
  • selectedControlTextColor
  • alternateSelectedControlTextColor
  • scrubberTexturedBackground
  • windowBackgroundColor
  • windowFrameTextColor
  • underPageBackgroundColor
  • findHighlightColor
  • highlightColor
  • shadowColor

Each color can be retrieved as a Color object using the AppkitUiElementColors.getColor method:

final darkWindowBackgroundColor = await AppkitUiElementColors.getColor(
  uiElementColor: UiElementColor.windowBackgroundColor,
  appearance: NSAppearanceName.darkAqua,
);

Alternatively, it can also be converted to any available NSColorSpace and retrieved as a map of requested NSColorComponents using AppkitUiElementColors.getColorComponents:

final components = await AppkitUiElementColors.getColorComponents(
  uiElementColor: UiElementColor.selectedControlColor,
  components: {
    NSColorComponent.redComponent,
    NSColorComponent.greenComponent,
    NSColorComponent.blueComponent,
  },
  colorSpace: NSColorSpace.sRGB,
  appearance: NSAppearanceName.aqua,
);

// prints "{blueComponent: 0.7450980544090271, redComponent: 1.0, greenComponent: 0.9333333373069763}"
print(components);
Observing system color changes

Certain events, such as the user changing their preferred accent color, can trigger system color changes. Such changes can be observed using the SystemColorObserver class. The AppkitUiElementColors class provides a global shared instance of SystemColorObserver that can be accessed as follows:

AppkitUiElementColors.systemColorObserver.stream
    .listen((_) => print('System colors changed.'));
Building widgets using UiElementColorBuilder

The UiElementColorBuilder class provides a convenient way to build widgets that depend on UI element colors provided by appkit_ui_element_colors:

UiElementColorBuilder(
  builder: (context, colorContainer) => Container(
    color: colorContainer.windowBackgroundColor,
  ),
);

By default, UiElementColorBuilder uses a SharedUiElementColorContainerInstanceProvider to provide a global shared instance of UiElementColorContainer. SharedUiElementColorContainerInstanceProvider uses an instance of MediaQueryData derived from the current BuildContext and assumes it to be the same across all UiElementBuilders which use it. If your app contains surfaces with different MediaQueryData overrides, use OwnedUiElementColorContainerInstanceProvider instead:

// A dark cupertino theme.
CupertinoTheme(
  data: const CupertinoThemeData(
    brightness: Brightness.dark,
  ),
  // Override the MediaQueryData so that platformBrightness is dark.
  child: MediaQuery(
    data: MediaQuery.of(context).copyWith(
      platformBrightness: Brightness.dark,
    ),
    child: UiElementColorBuilder(
      // Since there may be surfaces within the app that do not override the
      // brightness, use an OwnedUiElementColorContainerInstanceProvider.
      uiElementColorContainerInstanceProvider:
          OwnedUiElementColorContainerInstanceProvider(),
      builder: (context, colorContainer) => Container(
        color: colorContainer.windowBackgroundColor,
      ),
    ),
  ),
);

Incorrect usage of SharedUiElementColorContainerInstanceProvider throws the following assertion error:

“Found conflicting MediaQueryData in SharedUiElementColorContainerInstanceProvider. If you are using UiElementColorBuilder within widget subtrees with differing MediaQueryData (such as different theme brightness or accessibility settings), please use OwnedUiElementColorContainerInstanceProvider instead.”

Kategorien

Abhängigkeiten

Abhängigkeiten 2 Einträge

  • equatable^2.0.5
  • plugin_platform_interface^2.0.2

Quell-Repository

Projekte, die dieses Paket verwenden