【问题标题】:AutoScroll to a offset in interactive viewer in flutter在颤动中自动滚动到交互式查看器中的偏移量
【发布时间】:2021-01-26 09:10:12
【问题描述】:

通过Interactive viewer 文档,我知道我们可以使用toScene 方法自动滚动到Interactive viewer 中的特定位置。但我尝试了但一切都是徒劳的。如何自动滚动到给定交互式位置的偏移量查看器

 import 'dart:async';

import 'package:flutter/material.dart';
import 'package:flutter/scheduler.dart';

class MyPlanet extends StatefulWidget {
  @override
  _MyPlanetState createState() => _MyPlanetState();
}

class _MyPlanetState extends State<MyPlanet> {
  final TransformationController transformationController =
      TransformationController();

  @override
  void initState() {
    SchedulerBinding.instance.addPostFrameCallback((_) async {
      Timer(Duration(seconds: 5), () {
        setState(() {
          transformationController.value = Matrix4.identity()
            ..translate(800, 0.0);
          transformationController.toScene(Offset(800, 0.0));
        });
      });
    });
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return InteractiveViewer(
      minScale: 0.5,
      maxScale: 1,
      constrained: false,
      transformationController: transformationController,
      child: Container(
        height: 896,
        width: 2000,
        child: Image.asset(
          'assets/images/rain_forest.png',
          fit: BoxFit.cover,
          height: double.infinity,
        ),
      ),
    );
  }
}

【问题讨论】:

  • “但我试过了,但一切都是徒劳的。” - 然后发布你的代码
  • @pskink 谢谢,我已经发布了代码,请验证代码
  • 你需要类似:transformationController.value = Matrix4.identity()..translate(x, y)
  • 翻译的矩阵应该是什么。对不起,我是新来的颤振
  • 所以如果你只想移动到 (x, )y 位置你有上面的代码

标签: flutter flutter-layout flutter-animation


【解决方案1】:

谢谢@pskink。 可以使用TransformationControllermatrix4 实现交互式查看器中的自动滚动

@override
void initState() {
TransformationController transformationController =
      TransformationController();
transformationController.value = Matrix4.identity()
        ..translate(-200.0, 0.0); // translate(x,y);
}

【讨论】:

  • 你能帮我解决这个问题吗?我使用的是相同的,但是当经过一些翻译后,即(-700,0.0)我尝试在零处转到 X 轴。因此,当我调用 transformationController.value.traslate(0.0,-500) 时,不会执行转换为 (0.0,-500) 而是执行 (-700,-500)。
猜你喜欢
  • 1970-01-01
  • 2022-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-06
  • 1970-01-01
  • 2019-12-10
相关资源
最近更新 更多