public override Widget build(BuildContext context) { D.assert(material_.debugCheckHasMaterial(context)); Color currentColor = null; Color currentFillColor = null; Color currentFocusColor = null; Color currentHoverColor = null; Color currentSplashColor = null; ThemeData theme = Theme.of(context); ToggleButtonsThemeData toggleButtonsTheme = ToggleButtonsTheme.of(context); if (onPressed != null && selected) { currentColor = selectedColor ?? toggleButtonsTheme.selectedColor ?? theme.colorScheme.primary; currentFillColor = fillColor ?? theme.colorScheme.primary.withOpacity(0.12f); currentFocusColor = focusColor ?? toggleButtonsTheme.focusColor ?? theme.colorScheme.primary.withOpacity(0.12f); currentHoverColor = hoverColor ?? toggleButtonsTheme.hoverColor ?? theme.colorScheme.primary.withOpacity(0.04f); currentSplashColor = splashColor ?? toggleButtonsTheme.splashColor ?? theme.colorScheme.primary.withOpacity(0.16f); } else if (onPressed != null && !selected) { currentColor = color ?? toggleButtonsTheme.color ?? theme.colorScheme.onSurface.withOpacity(0.87f); currentFillColor = theme.colorScheme.surface.withOpacity(0.0f); currentFocusColor = focusColor ?? toggleButtonsTheme.focusColor ?? theme.colorScheme.onSurface.withOpacity(0.12f); currentHoverColor = hoverColor ?? toggleButtonsTheme.hoverColor ?? theme.colorScheme.onSurface.withOpacity(0.04f); currentSplashColor = splashColor ?? toggleButtonsTheme.splashColor ?? theme.colorScheme.onSurface.withOpacity(0.16f); } else { currentColor = disabledColor ?? toggleButtonsTheme.disabledColor ?? theme.colorScheme.onSurface.withOpacity(0.38f); currentFillColor = theme.colorScheme.surface.withOpacity(0.0f); } TextStyle currentTextStyle = textStyle ?? toggleButtonsTheme.textStyle ?? theme.textTheme.bodyText2; BoxConstraints currentConstraints = constraints ?? toggleButtonsTheme.constraints ?? new BoxConstraints(minWidth: material_.kMinInteractiveDimension, minHeight: material_.kMinInteractiveDimension); Widget result = new ClipRRect( borderRadius: clipRadius, child: new RawMaterialButton( textStyle: currentTextStyle.copyWith( color: currentColor ), constraints: currentConstraints, elevation: 0.0f, highlightElevation: 0.0f, fillColor: currentFillColor, focusColor: currentFocusColor, highlightColor: highlightColor ?? theme.colorScheme.surface.withOpacity(0.0f), hoverColor: currentHoverColor, splashColor: currentSplashColor, focusNode: focusNode, materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, onPressed: onPressed, child: child ) ); return(new _SelectToggleButton( key: key, leadingBorderSide: leadingBorderSide, horizontalBorderSide: horizontalBorderSide, trailingBorderSide: trailingBorderSide, borderRadius: borderRadius, isFirstButton: isFirstButton, isLastButton: isLastButton, child: result )); }
public override Widget wrap(BuildContext context, Widget child) { ToggleButtonsTheme ancestorTheme = context.findAncestorWidgetOfExactType <ToggleButtonsTheme>(); return(ReferenceEquals(this, ancestorTheme) ? child : new ToggleButtonsTheme(data: data, child: child)); }
public override Widget build(BuildContext context) { D.assert( !isSelected.Any((bool val) => val == null), () => "All elements of isSelected must be non-null.\n" + "The current list of isSelected values is as follows:\n" + $"{isSelected}" ); D.assert( focusNodes == null || !focusNodes.Any((FocusNode val) => val == null), () => "All elements of focusNodes must be non-null.\n" + "The current list of focus node values is as follows:\n" + $"{focusNodes}" ); D.assert( () => { if (focusNodes != null) { return(focusNodes.Count == children.Count); } return(true); }, () => "focusNodes.length must match children.length.\n" + $"There are {focusNodes.Count} focus nodes, while " + $"there are {children.Count} children." ); ThemeData theme = Theme.of(context); ToggleButtonsThemeData toggleButtonsTheme = ToggleButtonsTheme.of(context); TextDirection textDirection = Directionality.of(context); var childrenList = new List <Widget>(children.Count); for (var i = 0; i < children.Count; i++) { var index = i; BorderRadius edgeBorderRadius = _getEdgeBorderRadius(index, children.Count, textDirection, toggleButtonsTheme); BorderRadius clipBorderRadius = _getClipBorderRadius(index, children.Count, textDirection, toggleButtonsTheme); BorderSide leadingBorderSide = _getLeadingBorderSide(index, theme, toggleButtonsTheme); BorderSide horizontalBorderSide = _getHorizontalBorderSide(index, theme, toggleButtonsTheme); BorderSide trailingBorderSide = _getTrailingBorderSide(index, theme, toggleButtonsTheme); childrenList.Add(new _ToggleButton( selected: isSelected[index], textStyle: textStyle, constraints: constraints, color: color, selectedColor: selectedColor, disabledColor: disabledColor, fillColor: fillColor ?? toggleButtonsTheme.fillColor, focusColor: focusColor ?? toggleButtonsTheme.focusColor, highlightColor: highlightColor ?? toggleButtonsTheme.highlightColor, hoverColor: hoverColor ?? toggleButtonsTheme.hoverColor, splashColor: splashColor ?? toggleButtonsTheme.splashColor, focusNode: focusNodes != null ? focusNodes[index] : null, onPressed: onPressed != null ? () => { onPressed(index); } : (VoidCallback)null, leadingBorderSide: leadingBorderSide, horizontalBorderSide: horizontalBorderSide, trailingBorderSide: trailingBorderSide, borderRadius: edgeBorderRadius, clipRadius: clipBorderRadius, isFirstButton: index == 0, isLastButton: index == children.Count - 1, child: children[index] )); } return(new IntrinsicHeight( child: new Row( crossAxisAlignment: CrossAxisAlignment.stretch, mainAxisSize: MainAxisSize.min, children: childrenList) )); }
public static ToggleButtonsThemeData of(BuildContext context) { ToggleButtonsTheme toggleButtonsTheme = context.dependOnInheritedWidgetOfExactType <ToggleButtonsTheme>(); return(toggleButtonsTheme?.data ?? Theme.of(context).toggleButtonsTheme); }