如何在 flutter 中部分显示图像以获得幕后效果?

How to display an image partially in flutter to get a curtain-raising effect?

我想在抖动中显示图像,使其根据滑块值产生窗帘升起动画的效果。

比如我在flutter app上展示的是固定高宽的IMAGE.jpg

滑块的范围为 0 到 10。

同样

如何创建这种效果?

要创建这种窗帘效果,您可以使用 Slider and Align 小部件。您可以在 Align class 中设置 heightFactor 以创建百分比窗帘效果。在 Slider 小部件中,您现在可以设置 heightFactor 的值来创建窗帘效果。

这是一个最小的工作示例:

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(home: CurtainScaffold());
  }
}

class CurtainScaffold extends StatefulWidget {
  @override
  _CurtainScaffoldState createState() => _CurtainScaffoldState();
}

class _CurtainScaffoldState extends State<CurtainScaffold> {
  double curtain = 0.0;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.black,
      body: SafeArea(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.spaceBetween,
          children: <Widget>[
            Slider(
              onChanged: (double val) {
                setState(() {
                  this.curtain = val;
                });
              },
              value: curtain,
              min: 0.0,
              max: 1.0,
            ),
            ClipRect(
              child: Align(
                alignment: Alignment.bottomCenter,
                heightFactor: curtain,
                child: Image.network(
                    'https://upload.wikimedia.org/wikipedia/commons/b/bd/Dts_news_bill_gates_wikipedia.JPG'),
              ),
            ),
          ],
        ),
      ),
    );
  }
}