首页 > 解决方案 > Flutter:滑动时在页面浏览中添加新页面

问题描述

刷卡时如何在浏览量小部件中添加新页面?我试图在动画后设置状态并在列表中添加新页面,但它不起作用。

标签: flutterflutter-layoutflutter-animation

解决方案


   import 'package:flutter/material.dart';
    
    class HomeScreen extends StatefulWidget {
      @override
      _HomeScreenState createState() => _HomeScreenState();
    }
    
    class _HomeScreenState extends State<HomeScreen> {
      PageController _pageController = PageController(
        initialPage: 0,
      );
      int currentIndex = 0;
    
      Widget childWidget = ChildWidget(
        number: AvailableNumber.First,
      );
    
      @override
      void dispose() {
        _pageController.dispose();
        super.dispose();
      }
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          bottomNavigationBar: BottomNavigationBar(
            selectedItemColor: Theme.of(context).primaryColor,
            unselectedItemColor: Colors.grey[500],
            currentIndex: currentIndex,
            onTap: (value) {
              currentIndex = value;
              _pageController.animateToPage(
                value,
                duration: Duration(milliseconds: 200),
                curve: Curves.linear,
              );
    
              setState(() {});
            },
            items: [
              BottomNavigationBarItem(
                icon: Icon(Icons.home),
                title: Text("First"),
              ),
              BottomNavigationBarItem(
                icon: Icon(Icons.trending_up),
                title: Text("Second"),
              ),
              BottomNavigationBarItem(
                icon: Icon(Icons.dashboard),
                title: Text("Third"),
              ),
              BottomNavigationBarItem(
                icon: Icon(Icons.dashboard),
                title: Text("Third"),
              ),
            ],
          ),
          body: PageView(
            controller: _pageController,
            onPageChanged: (page) {
              setState(() {
                currentIndex = page;
              });
            },
            children: <Widget>[
             Text('1'),
               Text(2'),
                    Text('3'),
            ],
          ),
        );
      }
    }

视频示例


推荐阅读