【问题标题】:Access State variable from outside the widget从小部件外部访问状态变量
【发布时间】:2021-06-10 01:35:42
【问题描述】:

所以我已经制作了PageViewer,但我无法在其中使用Navigator,而是我想要做的是使用返回函数的StatefulWidget 在内部传递不同的小部件, 我想访问StatefulWidget 并更改其中的变量,但找不到方法

这是PageView

Expanded(
            child: PageView(
              children: [
                SetPage(), // Look at the bottom need to be changeable
                ],
            ),
          ),

这是我用来传递页面的StatefulWidget

class SetPage extends StatefulWidget {
  @override
_SetPageState createState() => _SetPageState();
}

class _SetPageState extends State<SetPage> {
  @override
  Widget build(BuildContext context) {

var _page = ChooseAccount();

return _page;
  }
}

【问题讨论】:

    标签: android flutter dart flutter-navigation statefulwidget


    【解决方案1】:

    您不需要 StatefulWidget 来包含另一个 Widget(在这种情况下为 ChooseAccount)。如果我正确理解您的问题,您想动态更改PageView 对吗?在这种情况下,您可以执行以下操作:

      // List of pages in your app
      List<Widget> pages = [
        ChooseAccount(), // The choose account page
        Container(
          color: Colors.blue,
        ), // Some other pages
        Container(
          color: Colors.green,
        ),
      ];
    

    然后您可以简单地使用PageView 中的此页面列表与PageController 结合在页面之间导航:

      // Define the controller here
      PageController _controller = PageController(initialPage: 0);
    
      // Use this method to navigate between pages (for example when changing tabs in the TabBar`
      navigateToPage(int index) {
        _controller.jumpToPage(index);
      }
    
    // Use the controller and the pages with the PageView
    PageView(
        controller: _controller,
        physics: NeverScrollableScrollPhysics(),
        children: pages,
    )
    

    【讨论】:

    • 好的,我看到你在那里做了什么,但是有一个选项让 t 用户在屏幕之间滑动,我的应用程序中的 pageView 显示登录视图,然后我想重定向用户注册或登录视图。有没有办法禁用滑动?
    • @NitaiDan 你可以用PageView(physics:new NeverScrollableScrollPhysics()) 禁用滑动,更新了我的答案
    • 谢谢!做到了!
    猜你喜欢
    • 2017-03-19
    • 2021-05-19
    • 2014-11-21
    • 2018-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多