flutter - Flutter:如何显示来自同一个函数的多条数据
问题描述
我正在开发一个应用程序,该应用程序显示数据库中的所有文本以进行翻译。目前,我正在测试如何显示我的 SQL 数据库中的文本。
我有两个函数用于显示文本:
final String displayUrl = 'https://fourieristic-thousa.000webhostapp.com/display.test.php?action=display';
String text = "";
String test = "";
bool isLoaded = false;
Future fetchData(String test) async {
var result = await http.post(
Uri.parse(displayUrl),
body: {
"test": test,
}
);
isLoaded = true;
text = (result.body);
print("fetchData has been called. This is the data:");
print(text);
return text;
}
displayText() {
if(isLoaded) {
print("displayText has been called");
return Text(text);
} else {
print("displayText has no data");
return Container(); // an empty container.
}
}
接下来,我使用这些容器来尝试显示单独的文本:
Container(
child: FutureBuilder(
future: fetchData(test = "one"),
builder: (BuildContext context, AsyncSnapshot snapshot) {
if(snapshot.hasData){
print("Data is being displayed for 'one'");
return SingleChildScrollView(
child: displayText(),
);
} else {
print("Data is not yet available");
return Center(
child: CircularProgressIndicator()
);
}
},
),
),
Container(
child: FutureBuilder(
future: fetchData(test = "test"),
builder: (BuildContext context, AsyncSnapshot snapshot) {
if(snapshot.hasData){
print("Data is being displayed for 'test'");
return SingleChildScrollView(
child: displayText(),
);
} else {
print("Data is not yet available");
return Center(
child: CircularProgressIndicator()
);
}
},
),
)
当我启动应用程序时。该页面显示两个文本容器。唯一的问题是两个文本都与上一个请求相同,如下所示:( “one”应该返回“two”,“test”应该返回“oke”)
所以我的问题是:如何显示两个容器及其各自的数据?而不是两次显示最新输入的数据。
解决方案
我认为您的问题出在以下行:
text = (result.body);
您将两次调用 fetchData() 的结果保存在同一个变量中,并且此变量用于在容器中显示文本。调用时的 build 方法将显示此变量的最后一个现有值。您要么需要将值保存在不同的变量中,要么使用列表将每个调用的值保存在某个索引上。
推荐阅读
- flutter - 颤动找出价格最高的 ToDoItem 的标题
- javascript - Vue:通过方法从父组件提交子组件表单的最佳方式
- oracle - 如何将多个版本的 Oracle 客户端驻留在同一服务器上的 DBD::Oracle 中
- ffmpeg - 使用特殊配置编译和打包 FFmpeg
- javascript - 如何将嵌套对象添加到结果数组
- c++ - c ++内存写入字节到内核驱动程序的地址
- swift - 如何向 SKAction 序列添加返回 void 的函数?
- r - 拉多个代码时出现 getSplits (Quantmod) 错误
- pandas - Pandas UDF (PySpark) - 不正确的类型错误
- python - 用按键停止 python 乌龟