首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何计算点指示器的横幅/页数?我使用的是smooth_page_indicator包,可以在pub.dev上使用

如何计算点指示器的横幅/页数?我使用的是smooth_page_indicator包,可以在pub.dev上使用
EN

Stack Overflow用户
提问于 2022-05-15 19:54:53
回答 1查看 115关注 0票数 0

我必须返回PageView中的页面数,这样如果横幅的数量增加或减少,Dots动画number >动画so中的“count”值就会自动更新。是否有任何方法来计算PageView中的页面数或子页面数?我该换个方法吗?用于使用的包的链接:指示器

代码语言:javascript
运行
复制
class _BannerWidgetState extends State<BannerWidget> {
  int _pages = 0; 
  final _controller = PageController();
  @override
  Widget build(BuildContext context) {
    return Stack(
      children: [
        Padding(
          padding: const EdgeInsets.fromLTRB(10, 0, 10, 10),
          child: ClipRRect(
            borderRadius: BorderRadius.circular(5),
            child: Container(
              height: 140,
              width: MediaQuery.of(context).size.width,
              color: Colors.white,
              child: PageView(
                controller: _controller,
                onPageChanged: ((val) {
                  setState(() {
                    _pages = val.toInt();
                  });
                }),
                children: const [
                  Center(
                    child: Text(
                      'Banner 1',
                      style: TextStyle(fontSize: 20),
                    ),
                  ),
                  Center(
                    child: Text(
                      'Banner 2',
                      style: TextStyle(fontSize: 20),
                    ),
                  ),
                  Center(
                    child: Text(
                      'Banner 3',
                      style: TextStyle(fontSize: 20),
                    ),
                  ),
                  
                ],
              ),
            ),
          ),
        ),
        DotsIndicatorWidget(pages: _pages),
      ],
    );
  }
}

class DotsIndicatorWidget extends StatelessWidget {
  const DotsIndicatorWidget({
    Key? key,
    required int pages,
  })  : _pages = pages,
        super(key: key);

  final int _pages;

  @override
  Widget build(BuildContext context) {
    return Positioned.fill(
      bottom: 18,
      child: Align(
        alignment: Alignment.bottomCenter,
        child: Row(
          //mainAxisSize: MainAxisSize.min,
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            AnimatedSmoothIndicator(
              activeIndex: _pages,
              count: 3,
              effect: const WormEffect(
                  spacing: 4.0,
                  activeDotColor: Colors.green,
                  dotColor: Colors.grey,
                  dotHeight: 8.0,
                  dotWidth: 8.0,
                  radius: 3,
                  type: WormType.normal),
            ),
          ],
        ),
      ),
    );
  }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-16 01:54:38

为PageView的子级创建一个变量

代码语言:javascript
运行
复制
List<Widget> _pages = [some Container]
int _currentIndex = 0;

并在onPageChanged()上更新

代码语言:javascript
运行
复制
onPageChanged: ((page) {
  setState(() {
    _currentIndex = page.toInt();
   });
}),

计算使用的PageView中的页数:_pages.length

但我认为,用过的软件包指示器是最好的方法

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72251746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档