前言
本文仅适合使用变量方式切换Widget的问题
问题产生
使用AS环境进行开发时,发现切换Widget时,无法热更新,需要反复重新Run 进行操作,十分繁琐且耽误时间!
经过查阅搜索引擎以及反复测试,特地写下该文章,希望能帮到你!!!
解决办法
更换实现方式
换成函数(Function)方式进行更换,Flutter无法对变量进行切换热更新!!!
错误方式:
String widgetIndex = "连接设置";
final Map<String,Widget> widgetMap = {
"连接设置": TestWidget(),
"座位设置": TestWidget(),
"字体设置": TestWidget()
};
...
Scaffold(
...
body: Row(
children: <Widget>[
//导航栏
navWidget(meeting),
changeWidgetList[widgetIndex] ?? Text("异常")
],
),
);
...
以上是变量实现方式,虽然效果可以达到,但是会影响到热更新,极度不推荐!!!
正确实现:
Widget changeWidgetList(){
switch(widgetIndex){
case "连接设置":
//自定义
return basicSetting();
case "座位设置":
//自定义
return SeatSetting();
case "字体设置":
//自定义
return fontSetting();
}
return Text("error");
}
...
Scaffold(
...
body: Row(
children: <Widget>[
//导航栏
navWidget(meeting),
//使用函数式即可!
changeWidgetList()
// changeWidgetList[widgetIndex] ?? Text("异常")
],
),
);
...
至此BUG修复完毕!!!
感谢你的观看!