rah*_*aha 2 lazy-loading widget flutter
我有一个包含大量内容(如图像、文本等)的小部件,这使得它在 Flutter 应用程序中变得很重,但是当应用程序导航到具有复杂小部件的小部件时,该应用程序面临卡顿,因为小部件太大而无法使用瞬间加载,
我想显示简单的 lite 加载小部件,直到加载原始小部件,从而从应用程序中删除卡顿并启用小部件的延迟加载,
如何在颤振中实现这一目标?
编辑:- 明确地说,我没有从 Internet 加载任何数据,这不会导致延迟。为了从 Internet 加载数据,我们有FutureBuilder. 这里我的小部件本身很重,加载需要一些时间。
如何在加载主小部件时显示正在加载的小部件。
首先你必须创建一个变量来保持状态
bool isLoading = true; //this can be declared outside the class
Run Code Online (Sandbox Code Playgroud)
然后您可以根据此变量返回加载小部件或任何其他小部件
return isLoading ?
CircularProgressIndicator() //loading widget goes here
: Scaffold() //otherwidget goes here
Run Code Online (Sandbox Code Playgroud)
您可以使用setState方法在这两种状态之间切换
加载数据后,请使用以下代码
setState(() {
isLoading = false;
});
Run Code Online (Sandbox Code Playgroud)
示例代码
class SampleClass extends StatefulWidget {
SampleClass({Key key}) : super(key: key);
@override
_SampleClassState createState() => _SampleClassState();
}
bool isLoading = true; // variable to check state
class _SampleClassState extends State<SampleClass> {
loadData() {
//somecode to load data
setState(() {
isLoading = false;//setting state to false after data loaded
});
}
@override
void initState() {
loadData(); //call load data on start
super.initState();
}
@override
Widget build(BuildContext context) {
return Container(
child: isLoading ? //check loadind status
CircularProgressIndicator() //if true
:Container(), //if false
);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2279 次 |
| 最近记录: |