• 赚钱入口【需求资源】限时招募流量主、渠道主,站长合作;【合作模式】CPS长期分成,一次推广永久有收益。主动打款,不扣量;

Flutter Slider小部件有什么新功能?

Flutter rin, seun 9个月前 (07-06) 294次浏览 0个评论

Flutter使您可以创建精美的本地编译应用程序。Flutter之所以能够做到这一点,是因为Flutter喜欢Material。Material是一个设计系统,可帮助构建高质量的数字体验。随着UI设计的不断发展,Material继续更新其组件,运动和设计系统。

Flutter最近将SliderRangeSlider小部件更新为最新的设计。新的滑块在设计时考虑到了更好的可访问性:轨道更高,拇指带有阴影,并且值指示器具有新的形状和改进的文本缩放支持。

本文介绍了SliderRangeSlider小部件的更改。Flutter Slider小部件有什么新功能?

更新的内容Flutter Slider小部件有什么新功能?

SliderRangeSlider包括五个部分:

  1. 显示拇指值标签的价值指标
  2. 拇指滑过的轨迹
  3. 指示值位置的拇指
  4. 按下拇指时显示的叠加层
  5. 滑块不连续时在轨道上的刻度线

注意:本文涉及两种不同类型的叠加层:

  • OverlaySlider组件表示前述图像中提到的组分。
  • Flutter的Overlay类用于在以下屏幕上显示的所有其他小部件上“浮动”小部件。

新的默认值指标形状

value指标画在覆盖层上

下图显示了SliderRangeSlider窗口小部件的制作方式:Flutter Slider小部件有什么新功能?

您可能会注意到,我们使用单独LeafRenderObjectWidget的标记在叠加层上绘制指示器。这是因为我们需要在Overlay类和屏幕上都进行绘制,而您不能在同一个LeafRenderObjectWidget窗口小部件上进行绘制。

因为我们现在在覆盖层上绘制值指示符,所以它不再局限于MediaQuery包含滑块的范围。该指示器不再被剪切到该框,这意味着始终显示整个值指示器。Flutter Slider小部件有什么新功能?

注意:此示例的textScaleFactor设置为4,以进行更好的演示。

值指示器矩形已移动,因此指示器的一部分不会离开屏幕。这项改进使您可以增加指示器内的位数并增加应用程序的文本比例因子,而不必担心文本是否超出屏幕尺寸。在下图中,值指示符文本比例为4,并且包含3位数字的值,但是滑块可以毫无问题地处理它。

double getHorizontalShift({  RenderBox parentBox,  Offset center,  TextPainter labelPainter,  double textScaleFactor,  Size sizeWithOverflow,  double scale,}) {  assert(!sizeWithOverflow.isEmpty);  const double edgePadding = 8.0;  final double rectangleWidth = _upperRectangleWidth(labelPainter, scale, textScaleFactor);  /// Value indicator draws on the overlay, and by using the global Offset,  /// we are making sure that we use the bounds of the Overlay instead of the Slider.  final Offset globalCenter = parentBox.localToGlobal(center);  // The rectangle must be shifted toward the center so that it minimizes the  // chance of it rendering outside the bounds of the render box. If the shift  // is negative, then the lobe is shifted from right to left. If the shift is  // positive, then the lobe is shifted from left to right.  final double overflowLeft = math.max(0, rectangleWidth / 2 —     globalCenter.dx + edgePadding);  final double overflowRight = math.max(0, rectangleWidth / 2 — (sizeWithOverflow.width — globalCenter.dx — edgePadding));  if (rectangleWidth < sizeWithOverflow.width) {    return overflowLeft — overflowRight;  } else if (overflowLeft — overflowRight > 0) {    return overflowLeft — (edgePadding * textScaleFactor);  } else {    return -overflowRight + (edgePadding * textScaleFactor);  }}
Flutter Slider小部件有什么新功能?

设置值指示器优先

注意:此示例的textScaleFactor设置为4,以进行更好的演示。

旧值指标已更新

活动轨道大于非活动轨道

刻度线组件

拇指组件有阴影

喜欢 (0)

您必须 登录 才能发表评论!