【发布时间】:2020-08-12 12:26:47
【问题描述】:
我有一个返回页面的PageView.builder。每个都有一个标题和一个标签。
我还有一个EditPage,它允许用户编辑标题。
已编辑的标题通过 PHP 在 MySQL 数据库上进行更新。
我可以让单个页面自动更新为新标题吗?
还是每次更新标题时都必须完全重建 PageView?
这是PageView.builder 代码;
class StageBuilder extends StatelessWidget {
final List<SpeakContent> speakcrafts;
StageBuilder(this.speakcrafts);
@override
Widget build(context) {
return PageView.builder(
itemCount: speakcrafts.length,
itemBuilder: (context, int currentIndex) {
return createViewItem(speakcrafts[currentIndex], context);
},
);
}
Widget createViewItem(SpeakContent speakcraft, BuildContext context) {
return Column(
children: <Widget>[
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
speakcraft.title,
),
],
),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
speakcraft.tagname,
),
],
),
],
);
}
}
这是发布到 PHP/MYSQL 数据库的代码;
Future<String> titleUpdate({String opid, String title}) async {
String upDateUrl;
upDateUrl = "http://example.com?title=" + title;
final response = await get(upDateUrl);
if (response.statusCode == 200) {
print(response.body);
return response.body;
} else
throw Exception('We were not able to successfully update the title');
}
【问题讨论】:
-
使用键列表,为每个页面分配一个键,并在编辑后在所需页面上调用 setState。
-
是否有机会提供一些示例代码?
-
用
Form(key: formKey, child:myWidget()),这样的形式包装你的页面,并将formKey定义为GlobalKey<FormState> formKey = new GlobalKey(); -
那么在上面的代码中我会以那种形式包装 Column 吗?
-
RE:“cmets 不接受换行符”如果你把代码放在“回答”按钮中,我可以接受,这样你就可以获得积分。
标签: flutter dart flutter-provider flutter-pageview