public CupertinoUserInterfaceLevel(
     Key key = null,
     CupertinoUserInterfaceLevelData data = default,
     Widget child = null
     ) : base(key: key, child: child)
 {
     D.assert(data != null);
     _data = data;
 }
Exemplo n.º 2
0
        public CupertinoDynamicColor resolveFrom(BuildContext context, bool nullOk = true)
        {
            Brightness brightness = _isPlatformBrightnessDependent
                ? CupertinoTheme.brightnessOf(context, nullOk: nullOk) ?? Brightness.light
                : Brightness.light;

            bool isHighContrastEnabled = _isHighContrastDependent &&
                                         (MediaQuery.of(context, nullOk: nullOk)?.highContrast ?? false);

            CupertinoUserInterfaceLevelData level = _isInterfaceElevationDependent
                ? CupertinoUserInterfaceLevel.of(context, nullOk: nullOk) ?? CupertinoUserInterfaceLevelData.baselayer
                : CupertinoUserInterfaceLevelData.baselayer;

            Color resolved = null;

            switch (brightness)
            {
            case Brightness.light:
                switch (level)
                {
                case CupertinoUserInterfaceLevelData.baselayer:
                    resolved = isHighContrastEnabled ? highContrastColor : color;
                    break;

                case CupertinoUserInterfaceLevelData.elevatedlayer:
                    resolved = isHighContrastEnabled ? highContrastElevatedColor : elevatedColor;
                    break;
                }

                break;

            case Brightness.dark:
                switch (level)
                {
                case CupertinoUserInterfaceLevelData.baselayer:
                    resolved = isHighContrastEnabled ? darkHighContrastColor : darkColor;
                    break;

                case CupertinoUserInterfaceLevelData.elevatedlayer:
                    resolved = isHighContrastEnabled ? darkHighContrastElevatedColor : darkElevatedColor;
                    break;
                }

                break;
            }

            Element _debugContext = null;

            D.assert(() => {
                _debugContext = context as Element;
                return(true);
            }
                     );

            return(new CupertinoDynamicColor(
                       debugLabel: _debugLabel,
                       effectiveColor: resolved,
                       color: color,
                       darkColor: darkColor,
                       highContrastColor: highContrastColor,
                       darkHighContrastColor: darkHighContrastColor,
                       elevatedColor: color,
                       darkElevatedColor: darkColor,
                       highContrastElevatedColor: highContrastColor,
                       darkHighContrastElevatedColor: darkHighContrastColor,
                       debugResolveContext: null
                       ));
        }