如何用flutter刷新小部件?(使用setState?)



我的应用程序页面上有一个按钮,当我点击它时,它会联系我的php/MySQLAPI并完成工作。在它显示警报对话框后,告诉我一切是否正确,当我单击"确定"时,我希望它刷新屏幕上显示的数据。这些数据是用futurebuilder加载的,并从我的api中获取。当我点击按钮时,它会删除所选的数据,所以当我点击警报对话框上的"确定"时,我希望数据消失,所以它需要刷新。使用setstate也许是解决方案,但当我尝试设置setstate时,它不起作用。你有主意吗?

您需要在onPressed:中使用setState

调用setState会通知框架,此对象的内部状态发生了变化,可能会影响子树中的用户界面,从而导致框架计划为此state对象进行构建。

例如:

import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
debugShowCheckedModeBanner: false,
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
List<String> listOfStr = ["loin", "dog", "cat"];
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Center(
child: ListView.builder(
shrinkWrap: true,
itemCount: listOfStr.length,
itemBuilder: (BuildContext context, int index) {
return ListTile(
onTap: () {
setState(() {
listOfStr.removeAt(index);
});
},
contentPadding: EdgeInsets.all(8.0),
title: Text(listOfStr[index]),
);
},
),
));
}
}

最新更新