迁移到 v4.0.0

摘要

破坏性变更

  • Tilt widget 只管理手势、传感器以及动画的状态(无 UI 渲染)。
    要还原之前的默认样式,你需要将 TiltTiltBaseContainer 组合使用,或者直接使用内置的 Tilt.base
  • Tilt.TiltStreamController 替换为 Tilt.TiltController,以统一输入流的管理。
  • 之前的 Tilt.lightShadowMode 参数已被拆分为独立的 TiltBaseContainerTiltProjectorContainer widget。
    要重现之前的样式,你需要在 Tilt widget 内组合它们,
    或者直接使用 Tilt.baseTilt.projector
  • ShadowConfig 已拆分为 ShadowBaseConfigShadowProjectorConfig
  • TiltParallax 的参数 size 重命名为 offset

弃用

  • TiltProjectorContainerlightConfig 现已弃用。
    由于当前模拟的光照效果不适用于 Projector,
    因此现在默认禁用,并将在未来版本中移除。

Tilt 基础样式 (LightShadowMode.base)

Tilt widget 已重构,现在仅管理手势、传感器和动画的状态,不再处理 UI 渲染。
要还原之前的默认样式,你可以将 TiltTiltBaseContainer 组合使用,或者直接使用更方便的内置 Tilt.base

ShadowConfig 已拆分为 ShadowBaseConfigShadowProjectorConfig

参数详情:

之前:

Tilt(
  shadowConfig: ShadowConfig(xxx),
  child: XxxWidget(),
),

// 或者

Tilt(
  lightShadowMode: LightShadowMode.base,
  shadowConfig: ShadowConfig(xxx),
  child: XxxWidget(),
),

之后:

/// 搭配 TiltBaseContainer 为 Tilt 实现效果。
Tilt(
  child: TiltBaseContainer(
    shadowConfig: ShadowBaseConfig(xxx),
    child: XxxWidget(),
  ),
),

// 或者

/// Tilt 内置 Tilt.base 实现效果。
/// Tilt.base 是一个便捷的 widget,它由 Tilt 和 TiltBaseContainer 组合而成。
Tilt.base(
  shadowConfig: ShadowBaseConfig(xxx),
  child: XxxWidget(),
),

LightShadowMode.projector 样式

之前的 Tilt.lightShadowMode 参数已被拆分为独立的 TiltBaseContainerTiltProjectorContainer widget。
要重现之前的样式,你需要在 Tilt widget 内组合它们,或者直接使用 Tilt.baseTilt.projector

ShadowConfig 已拆分为 ShadowBaseConfigShadowProjectorConfig

参数详情:

之前:

Tilt(
  lightShadowMode: LightShadowMode.projector,
  shadowConfig: ShadowConfig(xxx),
  child: XxxWidget(),
),

之后:

/// 搭配 TiltProjectorContainer 为 Tilt 实现效果。
Tilt(
  child: TiltProjectorContainer(
    shadowConfig: ShadowProjectorConfig(xxx),
    child: XxxWidget(),
  ),
),

// 或者

/// Tilt 内置 Tilt.projector 实现效果。
/// Tilt.projector 是一个便捷的 widget,它由 Tilt 和 TiltProjectorContainer 组合而成。
Tilt.projector(
  shadowConfig: ShadowProjectorConfig(xxx),
  child: XxxWidget(),
),

Tilt 控制器

之前的 Tilt.TiltStreamController 已被替换为 Tilt.TiltController,以统一输入流的管理。

详情:Tilt 控制器

之前:

final tiltStreamController = StreamController<TiltStreamModel>.broadcast();


void dispose() {
  tiltStreamController.close();
  super.dispose();
}

...

Tilt(
  tiltStreamController: tiltStreamController,
  ...
),

...

/// move
tiltStreamController.add(
  TiltStreamModel(
    position: Offset(xx, xx),
    gestureUse: true,
  ),
);

/// leave
tiltStreamController.add(
  TiltStreamModel(
    position: Offset(xx, xx),
    gestureUse: false,
  ),
);

之后:

final tiltController = TiltController();


void dispose() {
  tiltController.dispose();
  super.dispose();
}

...

Tilt(
  tiltController: tiltController,
  ...
),

...

/// move
tiltController.move(position: Offset(xx, xx));

/// leave
tiltController.leave(position: Offset(xx, xx));

重命名 TiltParallax 参数

之前:

TiltParallax(
  size: Offset(xx, xx),
  child: XxxWidget(),
),

之后:

TiltParallax(
  offset: Offset(xx, xx),
  child: XxxWidget(),
),