1

我正在使用带有装饰的 Ink 小部件,以允许墨水溅到图像和彩色背景上方。

将它包裹在 Dismissible 中后,我得到了一个奇怪的效果:当我滑动小部件时,它的内容按预期移动,但装饰卡在原来的位置。

您可以在 dartpad 中看到这一点:https ://dartpad.dev/5ef2d2eb3823821a74aa11c680d84d4b?null_safety=true

问:这是颤振中的预期行为还是错误?

注意:如果我将 Ink 替换为 Container,或者将其从 SingleChildScrollView 中取出,问题就会消失。

重现代码:


import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        // remove SingleChildScrollView and all will be fine
        body: SingleChildScrollView(
          child: Dismissible(
            key: Key('1'),
            // change Ink to Container and all will be fine
            child: Ink(
              width: 100,
              height: 100,
              color: Colors.red,
              child: Text('Swipe me, and watch my background get stuck!'),
            ),
          ),
        ),
      ),
    );
  }
}
4

1 回答 1

1

的文档Ink是...

在 [Material] 上绘制装饰(可以是简单的颜色)。

它发生在您的示例代码中,因为它为MaterialApp. Ink要解决您的问题,请将内部包装为Material.

样本...

Material(
  child: Ink(
    width: 100,
    height: 100,
    color: Colors.red,
    child: Text('Swipe me, and watch my background get stuck!'),
  ),
),
于 2021-04-12T09:17:13.047 回答