颤动中非动态容器小部件的水平轮播

Posted

技术标签:

【中文标题】颤动中非动态容器小部件的水平轮播【英文标题】:Horizontal carousel for non-dynamic container widgets in flutter 【发布时间】:2020-09-20 08:58:20 【问题描述】:

我正在尝试构建容器小部件的水平轮播 - 即用户只需水平滚动即可查看我拥有的 6 个容器小部件。

我该如何实现?

我尝试过使用 SingleChildScrollView() - 并在其中放置了一个 Row() 小部件,但这没有做任何事情.. 没有滚动。

Row(children: [
Container(child: Card(child: Text('Unit 1'))),
Container(child: Card(child: Text('Unit 2'))),
Container(child: Card(child: Text('Unit 3'))),
Container(child: Card(child: Text('Unit 4'))),
Container(child: Card(child: Text('Unit 5'))),
Container(child: Card(child: Text('Unit 6'))),

]),

我希望每个容器位于同一行,并且最终用户能够水平滚动以查看每个项目,

你将如何实现它?

【问题讨论】:

请检查this插件。 【参考方案1】:

您可以在下面复制粘贴运行完整代码 你可以使用包https://pub.dev/packages/flutter_mobile_carousel 您可以使用rowCount 来定义需要同时显示多少个项目

代码sn-p

 Carousel(rowCount: 4, children: [
              Container(child: Card(child: Text('Unit 1'))),
              Container(child: Card(child: Text('Unit 2'))),
              Container(child: Card(child: Text('Unit 3'))),
              Container(child: Card(child: Text('Unit 4'))),
              Container(child: Card(child: Text('Unit 5'))),
              Container(child: Card(child: Text('Unit 6'))),
            ]),

工作演示

完整代码

import 'package:flutter/material.dart';
import 'package:flutter_mobile_carousel/carousel.dart';
import 'package:flutter_mobile_carousel/carousel_arrow.dart';
import 'package:flutter_mobile_carousel/default_carousel_item.dart';

void main() 
  runApp(MyApp());


class MyApp extends StatelessWidget 
  @override
  Widget build(BuildContext context) 
    return MaterialApp(
      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> 
  int _counter = 0;

  void _incrementCounter() 
    setState(() 
      _counter++;
    );
  

  @override
  Widget build(BuildContext context) 
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Carousel(rowCount: 4, children: [
              Container(child: Card(child: Text('Unit 1'))),
              Container(child: Card(child: Text('Unit 2'))),
              Container(child: Card(child: Text('Unit 3'))),
              Container(child: Card(child: Text('Unit 4'))),
              Container(child: Card(child: Text('Unit 5'))),
              Container(child: Card(child: Text('Unit 6'))),
            ]),
            Text(
              'You have pushed the button this many times:',
            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.headline4,
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: Icon(Icons.add),
      ),
    );
  

【讨论】:

以上是关于颤动中非动态容器小部件的水平轮播的主要内容,如果未能解决你的问题,请参考以下文章

在恒定大小的容器中滚动小部件颤动网络

如何在颤动中使用带有容器小部件的 if 语句

动态更改小部件的文本颤动/飞镖

请参阅附加的快照。我在颤动中通过容器创建了这样的圆形框。但我正在寻找小部件。颤振有一个小部件吗?

如何在颤动中获取动态文本小部件的宽度?

在颤动中单击按钮时添加小部件时处理动态复选框列表