首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用offStage小部件?

如何使用offStage小部件?
EN

Stack Overflow用户
提问于 2021-07-05 20:39:32
回答 1查看 524关注 0票数 0

我的第一个小部件有一个FlutterMap,当我导航到另一个屏幕并返回时,由于某种原因映射会重新加载,所以我想隐藏它(维护状态),我尝试使用Visibility,但是它不起作用,在一些推荐之后,我被告知使用OffStage小部件,但是我不知道如何实现它。这是逻辑,第一个屏幕有一个布尔检查isVisible,如果是真的话,那么地图将显示在屏幕上,当我从主屏幕导航时,布尔值被设置为false,因此可见性是隐藏的。同样,当我从第二个屏幕返回时,可见性被重新设置为true,从而显示了地图。如果我要用Offstage代替Visibility做同样的事情,我会怎么做呢?

代码语言:javascript
复制
class _MainScreenState extends State<MainScreen> {
  bool isVisible= true;

Future testFunction(bool checkValue) async {
    setState(() {
      isVisible= checkValue;
    });

 @override
  Widget build(BuildContext context) {
.....

Scaffold(
        body: Container(
            //change the margin
            margin: EdgeInsets.fromLTRB(0, 0, 0, 300),
            child: 
            Visibility(
                visible: isVisible,
                maintainAnimation: true,
                maintainState: true,
                child: (FlutterMap()
            ))

 .........
GestureDetector(
        onTap: () {
           
            setState(() {
                isVisible= !isVisible;
            });
            
            Navigator.push(
                //send to search screen
                context,
                MaterialPageRoute(
                    builder: (context) => (SearchScreen(
                        testFunction: testFunction))));

第二页

代码语言:javascript
复制
class SearchScreen extends StatefulWidget {
  final Function testFunction;

  const SearchScreen({this.testFunction});
GestureDetector(
    onTap: () {
        Navigator.pop(
            //send back data
            context,
            widget.testFunction(true));

    },
    child: Icon(Icons.arrow_back)),
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-05 20:57:30

,如果我要做同样的事情,在舞台外使用可见性代替可见性,我会怎么做?

Offstage的工作方式类似于Visibility,因为它们都有一个布尔标志,您可以使用它来切换每个小部件的操作。

因此,要使用Offstage代替Visibility,可以使用:

代码语言:javascript
复制
Scaffold(
  body: Container(
    margin: EdgeInsets.fromLTRB(0, 0, 0, 300),
    child: Offstage(
       offstage: isVisible,
       child: FlutterMap()
)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68261904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档