小编Mat*_*ith的帖子

Row内的TextField导致布局异常:无法计算大小

我得到一个渲染异常,我不明白如何修复.我正在尝试创建一个包含3行的列.

行[图片]

行[TextField]

行[按钮]

这是构建容器的代码:

Container buildEnterAppContainer(BuildContext context) {
    var container = new Container(
      padding: const EdgeInsets.all(8.0),
      child: new Column(
        mainAxisAlignment: MainAxisAlignment.start,
        children: <Widget>[
          buildImageRow(context),
          buildAppEntryRow(context),
          buildButtonRow(context)
        ],
      ),
    );
    return container;
  }
Run Code Online (Sandbox Code Playgroud)

和我的buildAppEntryRow文本容器的代码

Widget buildAppEntryRow(BuildContext context) {
    return new Row(
      children: <Widget>[
        new TextField(
          decoration: const InputDecoration(helperText: "Enter App ID"),
          style: Theme.of(context).textTheme.body1,
        )
      ],
    );
  }
Run Code Online (Sandbox Code Playgroud)

当我运行时,我得到以下异常:

I/flutter ( 7674): BoxConstraints forces an infinite width.
I/flutter ( 7674): These invalid constraints were provided to RenderStack's layout() function by the …
Run Code Online (Sandbox Code Playgroud)

dart flutter

94
推荐指数
6
解决办法
3万
查看次数

从StatefulWidget外部控制状态

我试图理解在Widgets State之外控制StatefulWidget状态的最佳实践.

我定义了以下接口.

abstract class StartupView {
  Stream<String> get onAppSelected;

  set showActivity(bool activity);
  set message(String message);
}
Run Code Online (Sandbox Code Playgroud)

我想创建一个StartupPage实现此接口的StatefulWidget .我希望Widget能够执行以下操作:

  1. 按下按钮时,它将通过onAppSelected流发送事件.控制器甚至会监听它并执行一些操作(db调用,服务请求等).

  2. 控制器可以调用showActivityset message使视图显示消息进度.

因为有状态窗口小部件不会将其状态作为属性公开,所以我不知道访问和修改状态属性的最佳方法.

我希望使用它的方式如下:

Widget createStartupPage() {
    var page = new StartupPage();
    page.onAppSelected.listen((app) {
      page.showActivity = true;
      //Do some work
      page.showActivity = false;
    });
  }
Run Code Online (Sandbox Code Playgroud)

我已经考虑通过传递我希望它返回的状态来实例化Widget createState()但是感觉不对.

关于我们为什么采用这种方法的一些背景:我们目前有一个Dart Web应用程序.对于视图 - 控制器分离,可测试性和对Flutter的前瞻性思考,我们决定为应用程序中的每个视图创建一个接口.这将允许WebComponent或Flutter Widget实现此接口并使所有控制器逻辑保持不变.

flutter

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

标签 统计

flutter ×2

dart ×1