Flutter控制組件的顯示和隱藏的三種方式
我從cnaaa.com購買了云服務器。
方式一:if語句控制
// 例如:
Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
if(a=="顯示")
Text("顯示"),
Offstage(
offstage: false,
child: Text("顯示"),
),
Visibility(
visible: true,
child: Text("顯示")
)
],
),
方式二:Offstage組件
offstage屬性控制控制child的顯示和隱藏,true時:隱藏,false時:顯示
Offstage(
offstage: true,
child: Text("顯示"),
)
方式三: Visibility
visible屬性控制child的顯示和隱藏,true時:顯示,false時:隱藏
Visibility(
visible: true,
child: Text("顯示")
)
Offstage和Visibility的區(qū)別:
1、Visibility 隱藏/可見,能保存組件的狀態(tài);Offstate不能保存組件的狀態(tài),組件重新加載。
2、當Offstage不可見(true)的時候,如果child有動畫等,需要手動停掉,Offstage并不會停掉動畫等操作。
3、Offstate隱藏時不占空間,Visibility可以設置隱藏時占據(jù)空間也可以不占據(jù)空間,默認不隱藏時不占據(jù)空間
備注:Visibility隱藏時占據(jù)空間如下:
Visibility(
visible:false,
maintainAnimation: true,
maintainSize: true,
maintainState: true,
child: Text("顯示"),
),
強調:maintainSize就是保持大小不變,如果只設置這個屬性,會報錯,另外兩個屬性:maintainAnimation和maintainState也必須同時設置。