比方说,我有一个看起来像这样的聊天屏幕。
现在,当用户单击“准备就绪时按一下”按钮时,将调用方法fetchNewQuestion()
。
我的意图是,这将发出一个HTTP请求,并使用显示结果
_buildUsersReply(httpResponse);
但是,问题在于此返回必须作为现有子项下的子项在当前脚手架的小部件内进行,以便将其建在底部,而先前的项仍在其中。结果如下:
您可以找到我的完整代码here。
这是否可以在语法上做到?还是我必须改变做这件事的概念?
[更新,我现在知道我上面的方法是错误的,我必须使用listview构建器。下面的CurrentStatus显示了我在实现该目标方面的进展。]
我已经建立了一个小部件列表:
List<Widget> chatScreenWidgets = [];
在setState上,我使用一个新的Widget更新它:
setState(() { chatScreenWidgets.add(_buildUsersReply("I think there were 35 humans and one horse.")); });
现在,我不确定如何在支架内传递小部件。我写了一些无效的代码。例如,我尝试过:
下图中和要点here中的代码:
答案 0 :(得分:0)
忘记支架,这个想法是关于您真正想要改变的东西,可以说是 一个列表,如果更新数组,则从数组中获取数据,则列表将更新;如果它是另一种类型的小部件,则可以用不同的方式处理它;如果您弄清楚每个部分的作用,我将编辑此答案您的小部件,因为我无法阅读您的完整代码。
如果您还有其他问题,可以问:)是否需要,请将其标记为答案。
答案 1 :(得分:0)
仅供以后参考,这是我真正需要做的:
1。。创建小部件列表
List<Widget> chatScreenWidgets = [];
2。。在我的方法中,我需要使用setState才能向该列表添加元素。我添加到此的每个小部件都将显示在该脚手架上。
`setState(() {
chatScreenWidgets.add(_buildUsersReply("Some Text"));
});`
3。。然后,将其加载到我的Scaffold中,我使用了itemBuilder以便将小部件列表返回到ListView。我已经有了该ListView(在这里我是手动添加子级的)。现在,这只是通过我的业务逻辑方法(在本例中为fetchNewQuestion()
)中的setState方法返回它们。
body: Stack(
children: <Widget>[
Padding(
padding: EdgeInsets.only(bottom: 0),
child: new ListView.builder(
physics: BouncingScrollPhysics(),
padding: EdgeInsets.symmetric(horizontal: 25),
itemCount: chatScreenWidgets.length,
itemBuilder: (BuildContext context, int itemCount) {
return chatScreenWidgets[itemCount];
}
),
),
],
),
);`
我希望这对未来的颤振工程师有所帮助!