public override Widget build(BuildContext context)
        {
            ClipRRect child = new ClipRRect
                              (
                borderRadius: BorderRadius.circular(scrollBarSize / 2),
                child: new Container(padding: EdgeInsets.fromLTRB(2, 2, 2, 2), color: Theme.of(context).indicatorColor)
                              );
            float width = widget.direction == NodeEditorScrollBarDirection.X
                ? widget.scrollViewSize.x * Math.Min(widget.scrollViewSize.x / widget.scrollContentSize.x, 1)
                : scrollBarSize;
            float height = widget.direction == NodeEditorScrollBarDirection.X
                ? scrollBarSize
                : widget.scrollViewSize.y * Math.Min(widget.scrollViewSize.y / widget.scrollContentSize.y, 1);

            return(widget.direction == NodeEditorScrollBarDirection.X ?
                   new Positioned
                   (
                       child: child,
                       width: width,
                       bottom: 2,
                       height: height,
                       left: (widget.scrollViewSize.x - width) * widget.scrollViewOffset.x / (widget.scrollViewSize.x - widget.scrollContentSize.x)
                   ):
                   new Positioned
                   (
                       child: child,
                       width: width,
                       top: (widget.scrollViewSize.y - height) * widget.scrollViewOffset.y / (widget.scrollViewSize.y - widget.scrollContentSize.y),
                       height: height,
                       right: 2
                   ));
        }
Exemple #2
0
        public override Widget build(BuildContext context)
        {
            List <Widget> items = new List <Widget>();
            Widget        onePhysicalPixelVerticalDivider =
                new SizedBox(width: 1.0f / MediaQuery.of(context: context).devicePixelRatio);

            this.widget.tipMenuItems.ForEach(tipMenuItem => {
                items.Add(_buildToolbarButton(text: tipMenuItem.title, onPressed: tipMenuItem.onTap));
                var index = this.widget.tipMenuItems.IndexOf(item: tipMenuItem);
                if (this.widget.tipMenuItems.Count > 1 && index < this.widget.tipMenuItems.Count)
                {
                    items.Add(item: onePhysicalPixelVerticalDivider);
                }
            });

            Widget toolbar = new ClipRRect(
                borderRadius: CustomTextSelectionControlsUtils._kToolbarBorderRadius,
                child: new DecoratedBox(
                    decoration: new BoxDecoration(
                        color: CustomTextSelectionControlsUtils._kToolbarDividerColor,
                        borderRadius: CustomTextSelectionControlsUtils._kToolbarBorderRadius,
                        border: Border.all(color: CustomTextSelectionControlsUtils._kToolbarBackgroundColor, 0)
                        ),
                    child: new Row(mainAxisSize: MainAxisSize.min, children: items)
                    )
                );

            return(new AnimatedBuilder(
                       animation: this._animationController,
                       builder: (cxt, child) => new Opacity(
                           opacity: this._animationOpacity.value,
                           child: toolbar
                           )
                       ));
        }
Exemple #3
0
        public override Widget build(BuildContext context)
        {
            List <Widget> items = new List <Widget>();
            Widget        onePhysicalPixelVerticalDivider =
                new SizedBox(width: 1.0f / MediaQuery.of(context: context).devicePixelRatio);

            this.tipMenuItems.ForEach(tipMenuItem => {
                items.Add(_buildToolbarButton(text: tipMenuItem.title, onPressed: tipMenuItem.onTap));
                var index = this.tipMenuItems.IndexOf(item: tipMenuItem);
                if (this.tipMenuItems.Count > 1 && index < this.tipMenuItems.Count)
                {
                    items.Add(item: onePhysicalPixelVerticalDivider);
                }
            });

            Widget triangle = SizedBox.fromSize(
                size: CustomTextSelectionControlsUtils._kToolbarTriangleSize,
                child: new CustomPaint(
                    painter: new TrianglePainter(
                        arrowDirection: this.arrowDirection
                        )
                    )
                );

            Widget toolbar = new ClipRRect(
                borderRadius: CustomTextSelectionControlsUtils._kToolbarBorderRadius,
                child: new DecoratedBox(
                    decoration: new BoxDecoration(
                        color: CustomTextSelectionControlsUtils._kToolbarDividerColor,
                        borderRadius: CustomTextSelectionControlsUtils._kToolbarBorderRadius,
                        border: Border.all(color: CustomTextSelectionControlsUtils._kToolbarBackgroundColor, 0)
                        ),
                    child: new Row(mainAxisSize: MainAxisSize.min, children: items)
                    )
                );

            List <Widget> menus = this.arrowDirection == ArrowDirection.down
                ? new List <Widget> {
                toolbar, triangle
            }
                : new List <Widget> {
                triangle, toolbar
            };

            return(new Column(
                       mainAxisSize: MainAxisSize.min,
                       children: menus
                       ));
        }
Exemple #4
0
        public override Widget build(BuildContext context)
        {
            List <Widget> items = new List <Widget>();
            Widget        onePhysicalPixelVerticalDivider =
                new SizedBox(width: 1.0f / MediaQuery.of(context).devicePixelRatio);

            if (this.handleCut != null)
            {
                items.Add(_buildToolbarButton("剪切", this.handleCut));
            }

            if (this.handleCopy != null)
            {
                if (items.isNotEmpty())
                {
                    items.Add(onePhysicalPixelVerticalDivider);
                }

                items.Add(_buildToolbarButton("拷贝", this.handleCopy));
            }

            if (this.handlePaste != null)
            {
                if (items.isNotEmpty())
                {
                    items.Add(onePhysicalPixelVerticalDivider);
                }

                items.Add(_buildToolbarButton("粘贴", this.handlePaste));
            }

            if (this.handleSelectAll != null)
            {
                if (items.isNotEmpty())
                {
                    items.Add(onePhysicalPixelVerticalDivider);
                }

                items.Add(_buildToolbarButton("全选", this.handleSelectAll));
            }

            Widget padding = new Padding(padding: EdgeInsets.only(bottom: 10.0f));

            Widget triangle = SizedBox.fromSize(
                size: CustomTextSelectionControlsUtils._kToolbarTriangleSize,
                child: new CustomPaint(
                    painter: new _TextSelectionToolbarNotchPainter((_ArrowDirection)this.arrowDirection)
                    )
                );

            Widget toolbar = new ClipRRect(
                borderRadius: CustomTextSelectionControlsUtils._kToolbarBorderRadius,
                child: new DecoratedBox(
                    decoration: new BoxDecoration(
                        color: CustomTextSelectionControlsUtils._kToolbarDividerColor,
                        borderRadius: CustomTextSelectionControlsUtils._kToolbarBorderRadius,
                        border: Border.all(color: CustomTextSelectionControlsUtils._kToolbarBackgroundColor, 0)
                        ),
                    child: new Row(mainAxisSize: MainAxisSize.min, children: items)
                    )
                );

            List <Widget> menus = this.arrowDirection == _ArrowDirection.down
                ? new List <Widget> {
                toolbar, triangle, padding
            }
                : new List <Widget> {
                padding, triangle, toolbar
            };

            return(new Column(
                       mainAxisSize: MainAxisSize.min,
                       children: menus
                       ));
        }
Exemple #5
0
        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
                       ));
        }