Flutter中的重叠CoverFlow

c3frrgcw  于 2023-01-27  发布在  Flutter
关注(0)|答案(3)|浏览(123)

我试着用flutter创建旧的iPhone Coverflow设计。我试过用align widthfactor创建listview。但是它只有一种重叠方式。

Container(
          height: 300,
          child: ListView.builder(
            scrollDirection: Axis.horizontal,
            itemCount: 25,
            itemBuilder: (BuildContext context, int position) => Align(
              widthFactor: 0.8,
              child: Container(
                height: 200,
                width: 120,
                color: Colors.green.withOpacity(0.4),
                child: Center(child: Text(position.toString())),
              ),
            ),
          ),
        ),


我需要实现图片上的设计,如何实现呢?我尝试了所有可用的包,我认为PreloadPageview,finite coverflow,simple coverflow,perspective pageview等等,我可以实现变换,但不能同时实现横向和横向的重叠滚动

nwlls2ji

nwlls2ji1#

它不是重叠的coverflow什么你想要的。
这是我的包裹。
我尝试实现重叠小工具...失败...

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
        visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  final List<String> titles = [
    "Title1",
    "Title2",
    "Title3",
    "Title4",
    "Title5",
    "Title6",
    "Title7",
    "Title8",
  ];

  final List<Widget> images = [
    Container(
      color: Colors.red,
    ),
    Container(
      color: Colors.yellow,
    ),
    Container(
      color: Colors.black,
    ),
    Container(
      color: Colors.cyan,
    ),
    Container(
      color: Colors.blue,
    ),
    Container(
      color: Colors.grey,
    ),
    Container(
      color: Colors.green,
    ),
    Container(
      color: Colors.amber,
    ),
  ];

  List<Widget> images2 = [
    Image.asset('assets/1.jpg'),
    Image.asset('assets/2.jpg'),
    Image.asset('assets/3.jpg'),
    Image.asset('assets/4.jpg'),
    Image.asset('assets/5.jpg'),
    Image.asset('assets/6.jpg'),
    Image.asset('assets/7.jpg'),
    Image.asset('assets/8.jpg'),
  ];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: SizedBox(
          height: 200,
          child: CoverFlow(
            images: images2,
            titles: titles,
            textStyle: TextStyle(color: Colors.red),
          ),
        ),
      ),
    );
  }
}
gpnt7bae

gpnt7bae2#

这与您的要求perspective_pageview非常相似:

Container(
          child: Center(
            // Adding Child Widget of Perspective PageView
            child: PerspectivePageView(
              hasShadow: true, // Enable-Disable Shadow
              shadowColor: Colors.black12, // Change Color
              aspectRatio: PVAspectRatio.ONE_ONE, // Aspect Ratio of 1:1 (Default)
              children: <Widget>[
                GestureDetector(
                  onTap: () {
                    debugPrint("Statement One");
                  },
                  child: Container(
                    color: Colors.red,
                  ),
                ),
                GestureDetector(
                  onTap: () {
                    debugPrint("Statement Two");
                  },
                  child: Container(
                    color: Colors.green,
                  ),
                )
              ],

            ),
          ),
        ),
szqfcxe2

szqfcxe23#

我也遇到了同样的问题。经过一些研究,我发现Overlapped Carousel Package似乎正好满足了你的需要。
希望它也能帮助其他人。编码愉快

相关问题