相关疑难解决方法(0)

如何从Flutter中的其他StatefulWidget设置/更新StatefulWidget的状态?

  1. 例如,下面的代码加按钮工作,能够更新文本,但减号按钮不能.
  2. 但是如果我们按下FloatingActionButton,那么状态就会刷新.
  3. 减号按钮正在更改变量的值,但不会更新父窗口小部件的状态.

在此输入图像描述

这是代码.....

import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      title: 'Flutter Demo',
      theme: new ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: new MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

int number;

EdgeInsets globalMargin = const EdgeInsets.symmetric(horizontal: 20.0, vertical: 20.0);
TextStyle textStyle = const TextStyle(
  fontSize: 100.0,
  color: Colors.black,
);

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() …
Run Code Online (Sandbox Code Playgroud)

state flutter

22
推荐指数
7
解决办法
3万
查看次数

在Flutter中的小部件之间传递数据的最佳方法

我开发了自己的自定义小部件,用于其他视图.在这个自定义小部件中,我有一个存储信息的类属性,假设这是一个获取小部件内新项的列表.现在我想从我的主要小部件的级别获取此列表中的项目.

怎么做?我不想创建这样的变量:var customWidget = MyCustomWidget()然后,获取内部变量customWidget.createState().myList- 我认为这是一个可怕的解决方案(我不确定它是否会起作用).将列表传递给我的自定义小部件的构造函数看起来非常难看.

有没有其他方法来获得其他小部件的状态?

dart flutter

18
推荐指数
1
解决办法
1万
查看次数

Flutter 有数据绑定吗?

Flutter 中是否有数据绑定

我已经检查有关字段更改的官方文档,但找不到任何内容。

dart flutter

9
推荐指数
1
解决办法
8896
查看次数

带有const关键字的Flutter变量

在Flutter文档的“编写您的第一个应用程序”教程中,步骤4名为“步骤4:创建无限滚动ListView”,要求您创建2个变量,显示在此处:

class RandomWordsState extends State<RandomWords> {
  final _suggestions = <WordPair>[];

  final _biggerFont = const TextStyle(fontSize: 18.0);
  ...
}
Run Code Online (Sandbox Code Playgroud)

为什么const在第三行使用关键字?我来自C#和JavaScript背景,我不习惯在赋值语句的右侧看到它。我注意到,如果将其删除,它仍然可以按预期工作。您能以拉面语来解释为什么要使用它,什么时候应该这样做?我猜想这太过分了,我不必使用它,但我只是想确定一下。

我不认为这是重复的,因为这篇文章中的答案非常适合解释我的问题,而在另一篇文章中找不到,更不用说另一篇文章是两部分的问题,使用Google时没人会找到。

dart flutter

8
推荐指数
2
解决办法
5588
查看次数

InheritedWidget混淆

InheritedWidget 的Flutter文档说

\n
\n

有效地沿树传播信息的小部件的基类。

\n

要从构建上下文获取特定类型的继承窗口小部件的最近实例,请使用 BuildContext.inheritFromWidgetOfExactType。

\n

当以这种方式引用继承的小部件时,\n当继承的小部件本身更改状态时,将导致使用者重建。

\n
\n

鉴于 Flutter 中的小部件是不可变的,并且在示例代码中..

\n
class FrogColor extends InheritedWidget {\n  const FrogColor({\n    Key key,\n    @required this.color,\n    @required Widget child,\n  }) : assert(color != null),\n       assert(child != null),\n       super(key: key, child: child);\n\n  final Color color;\n\n  static FrogColor of(BuildContext context) {\n    return context.inheritFromWidgetOfExactType(FrogColor);\n  }\n\n  @override\n  bool updateShouldNotify(FrogColor old) => color != old.color;\n}\n
Run Code Online (Sandbox Code Playgroud)\n

颜色属性final因此无法重新分配。假设这个小部件位于树的顶部,就像大多数示例一样,它什么时候会有用。对于要替换的小部件,必须创建一个新实例。

\n

据推测,在完成此操作的情况下,也将创建作为子级传递的任何内容的新实例,从而导致该子级的后代也进行重建,创建其子级的新实例等。

\n

无论如何,最终还是重建了整棵树。inheritFromWidgetOfExactType那么,当 InheritedWidget 实例的数据永远不会改变该实例时,使用 using 进行选择性更新是没有意义的?

\n

编辑:

\n

这是我不明白的最简单的例子,我可以将它们放在一起。\n在这个例子中,“更改” …

dart flutter inherited-widget

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

Flutter-了解 Provider、Bloc 的生命周期以及何时处置流

需要了解什么时候应该Bloc模式以及Bloc的生命周期(如何释放持有内存的对象)

我有一个屏幕,我从服务器获取数据,数据将仅用于单个屏幕。我正在使用 Bloc 模式来显示数据。

使用 Bloc 模式时,我有一个正在使用 StatelessWidget 的屏幕。我正在尝试处理“WillPopScope”上的流。一旦被处置,流就不能再使用。因为访问同一屏幕会导致崩溃,因为我用 Bloc 包装了 MaterialApp。

  1. 创建了一个流
    final _leaderBoardList = StreamController<List<dynamic>>.broadcast();
Run Code Online (Sandbox Code Playgroud)
  1. 处理流
    dispose() {
      print('_leaderBoardList disposed');
      _leaderBoardList.close();
    }
Run Code Online (Sandbox Code Playgroud)
  1. 将 Material App 包装在提供程序中:
    LeaderBoardProvider(
        child: MaterialApp(
        title: 'Table View Fetch',
        theme: ThemeData(
          primarySwatch: Colors.teal,
        ),
        home: HomeScreen(),
      ),
      );
Run Code Online (Sandbox Code Playgroud)
  1. Statelesswidget 'WillPopScope',我已评论了处理代码,因为据我了解,当前块已创建一次:
  Widget build(BuildContext context) {

    print(' ListView fetch Build called');
    final bloc = LeaderBoardProvider.of(context);
    bloc.fetchLeaderBoards();
    return WillPopScope(
      onWillPop: () async {
        //bloc.dispose();
        return true;
      },
      child: bodyStack(context, bloc),
    );
  }
Run Code Online (Sandbox Code Playgroud)

第一个问题,假设我创建一个广播流并删除“WillPopScope”中的代码处理,那么一切都会按预期工作,但我认为,这样,我的 Bloc 就可以为应用程序生命周期保留内存。

第二个问题 …

flutter inherited-widget bloc flutter-provider

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

多久调用一次构建方法?

我注意到在颤振应用程序中经常调用 build 方法。

我知道,如果 statefulWidget 中的页面状态发生变化,则会触发 build 方法。但我也注意到,即使应用程序中没有任何更改,也会调用 build 方法。

考虑到您将应用程序留给自己的情况,构建方法被频繁调用是否正常?如果是这样,为什么以及多久一次?

dart flutter

3
推荐指数
1
解决办法
1764
查看次数

提供程序与InheritedWidget

我错了吗Widget,或者如果我们只想将值传递给树,那ProviderInheritedWidget带有dispose方法的吗?

flutter flutter-provider

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

标签 统计

flutter ×8

dart ×5

flutter-provider ×2

inherited-widget ×2

bloc ×1

state ×1