标签: statefulwidget

Flutter中有状态和无状态小部件之间的关系是什么?

有状态窗口小部件定义为在其生命周期内更改其状态的任何窗口小部件.但是StatelessWidget,拥有一个StatefulWidget孩子是一个非常普遍的做法.StatelessWidget如果它有StatefulWidget一个孩子,不会成为有状态的吗?

我尝试将文档作为代码的一部分进行查看StatelessWidget,但无法弄清楚一个StatelessWidget可以Statefulwidget作为其子代的方式并仍然存在StatelessWidget.

Flutter中有状态和无状态小部件之间的关系和区别是什么?

dart flutter statefulwidget statelesswidget

58
推荐指数
11
解决办法
2万
查看次数

如果 Flutter 中的有状态小部件可以实现同样的功能,为什么我们需要无状态小部件?

我是 flutter 世界的新手,我最近学习了(或者我认为我已经学会了)有状态和无状态小部件,这是 Flutter 小部件的基础。

我们将无状态小部件用于未在显示器上重绘的内容(如文本、按钮等),但有状态小部件可以重绘自己。

所以我的问题是,如果有状态小部件可用于绘制与无状态小部件相同类型的小部件,为什么我们需要无状态小部件?

或者是否有任何特定原因在 flutter 中使用无状态而不是有状态的小部件?或者我们可以一直使用有状态的小部件而不是只能绘制一次内容的无状态小部件吗?

谢谢,对不起,如果这是一个愚蠢的问题。

编辑

那么问题不是无状态和有状态之间的区别。我知道其中的区别,但是仅使用有状态小部件有什么影响,因为通过使用它我们还可以实现无状态小部件可以做的大部分事情,那么为什么我们需要无状态小部件?它在颤振环境中的重要性是什么?的应用程序将不时重新绘制?

flutter statefulwidget statelesswidget

12
推荐指数
2
解决办法
4233
查看次数

获取flutter中父控件的高度

我想要创建statefulWidget并希望在这个小部件中获取父小部件的高度。不想通过从父小部件发送高度数据来做到这一点。我怎样才能做到这一点?

flutter statefulwidget

10
推荐指数
1
解决办法
8725
查看次数

在 Flutter 中临时从树中移除时保留小部件状态

我正在尝试保留小部件的状态,以便如果我暂时从小部件树中删除有状态小部件,然后稍后重新添加它,小部件将具有与删除之前相同的状态。这是我的一个简化示例:

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      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> {
  bool showCounterWidget = true;
  @override
  Widget build(BuildContext context) {

    return Material(
      child: Center(
        // Center is a layout widget. …
Run Code Online (Sandbox Code Playgroud)

state state-management dart flutter statefulwidget

7
推荐指数
2
解决办法
3961
查看次数

如何停止小部件以重新加载 Flutter 中 StatefulWidget 类中的 setState() 方法

我想要实现的是保存小部件的状态,即在调用 setState() 方法时它不应该刷新。

class _GenderSelectionPageState extends State<GenderSelectionPage> {
  bool isFemaleSelected = false;
  AdmobBannerSize bannerSize;
  GlobalKey _globalKey = new GlobalKey();

  bool isLoaded = false;

  @override
  void initState() {
    // TODO: implement initState
    super.initState();
    bannerSize = AdmobBannerSize.BANNER;
  }

  @override
  Widget build(BuildContext context) {
    double height = MediaQuery.of(context).size.height;
    double width = MediaQuery.of(context).size.width;

    return new Scaffold(
      body: new Container(
          width: width,
          child: new Center(
            child: Column(
              mainAxisAlignment: MainAxisAlignment.end,
              children: <Widget>[
                Expanded(
                  child: Column(
                    mainAxisAlignment: MainAxisAlignment.center,
                    mainAxisSize: MainAxisSize.max,
                    children: <Widget>[
                      Flexible(
                        child: new Hero(
                          tag: …
Run Code Online (Sandbox Code Playgroud)

reload dart flutter statefulwidget flutter-layout

6
推荐指数
1
解决办法
5272
查看次数

同一 Statefulwidget 的多个实例似乎共享同一个 State 对象?

我正在尝试使用 Flutter 构建一个应用程序,但遇到了一个小问题。我正在尝试实现一个包含三个页面的 BottomNavigaionBar 样式应用程序。(参见第一个片段)布局使用了三个“ChorePage”类型的对象。该应用程序似乎正在创建三个 ChorePage 实例,但仅创建一个 _ChorePageState 实例。

这会导致变量 _dataRows 在三个选项卡之间共享,这意味着我无法将不同的信息放入不同的选项卡中。为什么会发生这种情况以及如何预防?

我已将打印语句放入 createState() 函数中,并在 PopulateRows 函数中打印“this”变量,该函数在每次重建 ChorePage 时都会调用。打印输出如下所示,确认这三个小部件确实使用相同的 State 对象。(对象A只调用一次createState,并且this变量引用同一个对象)

class AppLayout extends StatefulWidget {
  @override
  _AppLayoutState createState() => _AppLayoutState();
}

class _AppLayoutState extends State<AppLayout> {
  int _currentIndex = 0;
  String title = 'Test';

  List<Widget> _children = [
    new ChorePage(Title:'A'),
    new ChorePage(Title:'B'),
    new ChorePage(Title:'C')
  ];

  @override
  Widget build(BuildContext context) {


    //STUFF BEFORE INIT
    return Scaffold(
      appBar: AppBar(
        title: Text('$title'),
      ),
      body: _children[_currentIndex],
      bottomNavigationBar: BottomNavigationBar(
        onTap: onTabTapped,
        currentIndex: _currentIndex,
        items:[ …
Run Code Online (Sandbox Code Playgroud)

class flutter statefulwidget

6
推荐指数
1
解决办法
2148
查看次数

如何在 StatelessWidget 中更改 StatefulWidget 的状态?

只是测试颤振。下面的代码示例是一个非常简单的 flutter 应用程序。问题是我不知道如何在 TestTextState 类中调用 setState() 函数,以便在每次按下更改按钮时更改文本。

import 'package:flutter/material.dart';

void main() => runApp(new MyApp());

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      title: 'Test app',
      home: new Scaffold(
        appBar: new AppBar(
          title: new Text("Test"),
        ),
        body: new Test(),
      ),
    );
  }
}

class Test extends StatelessWidget {

  final TestText testText = new TestText();

  void change() {
    testText.text == "original" ? testText.set("changed") : testText.set("original");
  }

  @override
  Widget …
Run Code Online (Sandbox Code Playgroud)

state widget dart flutter statefulwidget

5
推荐指数
1
解决办法
6057
查看次数

Flutter 中的所有 widget 都具有“bool this.mounted”属性吗?

祝你平安

我正在研究 Flutter 的小部件生命周期,并停在布尔变量的点上this.mounted,它确实直接存在于State类中,它只能与 a 作为子类连接StatefulWidget,而永远不会/不会与 a 连接StatelessWidget

问题是 ...

是否所有小部件实际上都包含bool this.mounted变量,正如某些人在[此接受的答案本文]中所说的那样?

我在Flutter中搜索,发现这个挂载变量只在类中,然后我进一步查找,找到了类内部State调用的函数。mount()Element

StatelessWidget与类相连StatelessElement,类从ComponentElement直接继承自该类的Element类扩展而来。

我现在真的很困惑,也许我误解了这一点,我需要对此的解释!谢谢。

lifecycle application-lifecycle flutter statefulwidget statelesswidget

5
推荐指数
2
解决办法
4401
查看次数

flutter 中 UniqueKey 的范围是什么?

我是一个独特的人。我的意思是我与这个世界上所有其他人都不同。当我在 flutter 中创建一个 UniqueKey 时,它与其他的有什么不同

dart flutter statefulwidget

5
推荐指数
1
解决办法
3052
查看次数

Flutter:保持持久(计时器)小部件打开并跨多个屏幕运行

我有一个应用程序需要一个持久的、跨多个屏幕的计时器功能,该功能可以从一个或两个不同的屏幕启动。\n我可以构建一个计时器小部件和倒计时部分。但我似乎无法弄清楚如何保持它在所有屏幕上运行和浮动,这意味着当我点击时,它仍然可以在不同的其他屏幕上显示?或者我是否需要在我进入的每个屏幕上用全局状态重建它?

\n

I\xe2\x80\x99m 认为底部有一个小的持久模态表?但持续的部分已经让我挣扎了一个星期了。

\n

我使用堆栈吗?我只是不知道从哪里开始可以跨所有屏幕的部分。

\n

请帮忙,伙计们。先感谢您!!!

\n

dart flutter statefulwidget

5
推荐指数
1
解决办法
1380
查看次数