【问题标题】:Flutter: Add new pages in pageview while swipingFlutter:滑动时在页面浏览中添加新页面
【发布时间】:2021-05-20 15:38:07
【问题描述】:

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

【问题讨论】:

    标签: flutter flutter-layout flutter-animation


    【解决方案1】:

    试试这个 sn-p:

    import 'package:flutter/material.dart';
    
    void main() => runApp(MyApp());
    
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          title: 'Flutter Demo',
          debugShowCheckedModeBanner: false,
          home: MyHomePage(),
        );
      }
    }
    
    class MyHomePage extends StatefulWidget {
      @override
      _MyHomePageState createState() => _MyHomePageState();
    }
    
    class _MyHomePageState extends State<MyHomePage> with TickerProviderStateMixin {
      List<String> _list = ['test', 'test', 'test'];
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: Text('TabBar Demo'),
          ),
          body: PageView.builder(
            onPageChanged: (index) {
              _list.add('test');
              setState(() {});
            },
            itemCount: _list.length,
            itemBuilder: (context, index) {
              return Center(
                child: Container(
                  child: Text(
                    _list[index],
                  ),
                ),
              );
            },
          ),
        );
      }
    }
    

    【讨论】:

      【解决方案2】:
         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'),
                  ],
                ),
              );
            }
          }
      

      video example

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-07-01
        • 1970-01-01
        • 2020-03-31
        • 1970-01-01
        • 2022-10-05
        • 2021-04-07
        • 2011-09-14
        相关资源
        最近更新 更多