Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 颤振-如何使SnackBar不向上推浮动操作按钮?_Android_Flutter_Floating Action Button_Android Snackbar - Fatal编程技术网

Android 颤振-如何使SnackBar不向上推浮动操作按钮?

Android 颤振-如何使SnackBar不向上推浮动操作按钮?,android,flutter,floating-action-button,android-snackbar,Android,Flutter,Floating Action Button,Android Snackbar,如何使Snackbar与FloatingActionButton重叠,并且在弹出时不向上推?我附上了我的简化代码以供参考。先谢谢你 class Screen extends StatefulWidget{ @override State<StatefulWidget> createState() => ScreenState(); } class ScreenState extends State<Screen>{ BuildContext con

如何使
Snackbar
FloatingActionButton
重叠,并且在弹出时不向上推?我附上了我的简化代码以供参考。先谢谢你

class Screen extends StatefulWidget{

  @override
  State<StatefulWidget> createState() => ScreenState();
}

class ScreenState extends State<Screen>{

  BuildContext context;

  @override
  Widget build(BuildContext context) => Scaffold(
    floatingActionButton: FloatingActionButton(
      onPressed: action,
    ),
    body: Builder(
      builder : (BuildContext context){
        this.context = context;
        return Container();
      }
    )
  );

  action() => Scaffold.of(context).showSnackBar(SnackBar(
    duration: Duration(milliseconds : 1000),
    content: Container(height: 10)
  ));
}
类屏幕扩展StatefulWidget{
@凌驾
State createState()=>ScreenState();
}
类ScreenState扩展了状态{
构建语境;
@凌驾
小部件构建(构建上下文)=>Scaffold(
浮动操作按钮:浮动操作按钮(
记者:行动,
),
车身:建造商(
生成器:(BuildContext上下文){
this.context=上下文;
返回容器();
}
)
);
action()=>Scaffold.of(context).showSnackBar(SnackBar(
持续时间:持续时间(毫秒:1000),
内容:容器(高度:10)
));
}

您可以将
SnackBar
行为
属性设置为
SnackBarBehavior.floating
,该属性将在其他小部件上方显示
SnackBar

这应该可以-

class Screen extends StatefulWidget{

  @override
  State<StatefulWidget> createState() => ScreenState();
}

class ScreenState extends State<Screen>{

  BuildContext context;

  @override
  Widget build(BuildContext context) => Scaffold(
    floatingActionButton: FloatingActionButton(
      onPressed: action,
    ),
    body: Builder(
      builder : (BuildContext context){
        this.context = context;
        return Container();
      }
    )
  );

  action() => Scaffold.of(context).showSnackBar(SnackBar(
    duration: Duration(milliseconds : 1000),
    content: Container(height: 10)
    behavior: SnackBarBehavior.floating, // Add this line
  ));
}
类屏幕扩展StatefulWidget{
@凌驾
State createState()=>ScreenState();
}
类ScreenState扩展了状态{
构建语境;
@凌驾
小部件构建(构建上下文)=>Scaffold(
浮动操作按钮:浮动操作按钮(
记者:行动,
),
车身:建造商(
生成器:(BuildContext上下文){
this.context=上下文;
返回容器();
}
)
);
action()=>Scaffold.of(context).showSnackBar(SnackBar(
持续时间:持续时间(毫秒:1000),
内容:容器(高度:10)
行为:SnackBarBehavior.floating,//添加此行
));
}

有关更多信息,请参见链接。

您可以将
SnackBar
行为属性设置为
SnackBarBehavior.floating
,该属性将在其他小部件上方显示
SnackBar

这应该可以-

class Screen extends StatefulWidget{

  @override
  State<StatefulWidget> createState() => ScreenState();
}

class ScreenState extends State<Screen>{

  BuildContext context;

  @override
  Widget build(BuildContext context) => Scaffold(
    floatingActionButton: FloatingActionButton(
      onPressed: action,
    ),
    body: Builder(
      builder : (BuildContext context){
        this.context = context;
        return Container();
      }
    )
  );

  action() => Scaffold.of(context).showSnackBar(SnackBar(
    duration: Duration(milliseconds : 1000),
    content: Container(height: 10)
    behavior: SnackBarBehavior.floating, // Add this line
  ));
}
类屏幕扩展StatefulWidget{
@凌驾
State createState()=>ScreenState();
}
类ScreenState扩展了状态{
构建语境;
@凌驾
小部件构建(构建上下文)=>Scaffold(
浮动操作按钮:浮动操作按钮(
记者:行动,
),
车身:建造商(
生成器:(BuildContext上下文){
this.context=上下文;
返回容器();
}
)
);
action()=>Scaffold.of(context).showSnackBar(SnackBar(
持续时间:持续时间(毫秒:1000),
内容:容器(高度:10)
行为:SnackBarBehavior.floating,//添加此行
));
}

有关更多信息,请参阅链接。

只需使用多个
Scaffold
s。把里面的包起来,外面的包起来。使用inner来放置属于它的所有内容,
主体
应用栏
底部导航栏
浮动操作按钮
等等。从外部的
body
BuildContext
调用
showSnackBar
。如果有,从内向外移动
抽屉
,使其保持在
小吃条
上方

如果您喜欢像经典祝酒词一样弹出
SnackBar
,请参阅Siddharth Patankar的答案。也谢谢你

下面是我答案的简化代码

  @override
  Widget build(BuildContext context) => Scaffold(
    drawer : Drawer(child: Container()),
    body: Builder(
      builder : (BuildContext context){
        this.context = context;
        return Scaffold(
          body: Container(),
          floatingActionButton: FloatingActionButton(
            onPressed: () => Scaffold.of(context).showSnackBar(SnackBar(
              duration: Duration(milliseconds : 1000),
              content: Container(height: 30),
            )),
          ),
        );
      }
    )
  );

只需使用多个
Scaffold
s。把里面的包起来,外面的包起来。使用inner来放置属于它的所有内容,
主体
应用栏
底部导航栏
浮动操作按钮
等等。从外部的
body
BuildContext
调用
showSnackBar
。如果有,从内向外移动
抽屉
,使其保持在
小吃条
上方

如果您喜欢像经典祝酒词一样弹出
SnackBar
,请参阅Siddharth Patankar的答案。也谢谢你

下面是我答案的简化代码

  @override
  Widget build(BuildContext context) => Scaffold(
    drawer : Drawer(child: Container()),
    body: Builder(
      builder : (BuildContext context){
        this.context = context;
        return Scaffold(
          body: Container(),
          floatingActionButton: FloatingActionButton(
            onPressed: () => Scaffold.of(context).showSnackBar(SnackBar(
              duration: Duration(milliseconds : 1000),
              content: Container(height: 30),
            )),
          ),
        );
      }
    )
  );

非常感谢。很好的解决方案。有什么方法可以使它重叠吗?你能详细说明一下你所说的重叠是什么意思吗?因为我提供的解决方案已经在其他小部件上面显示了
SnackBar
。就我所知,像在
堆栈中一样重叠,它不可能直接使用
SnackBar
小部件。您可能需要为此创建自己的自定义小部件,然后将其包装在
堆栈中。此外,根据谷歌官方的说法,不建议使用重叠的
SnackBar
。此外,如果我的答案解决了您的问题,请单击大复选框接受它作为答案。干杯非常感谢。很好的解决方案。有什么方法可以使它重叠吗?你能详细说明一下你所说的重叠是什么意思吗?因为我提供的解决方案已经在其他小部件上面显示了
SnackBar
。就我所知,像在
堆栈中一样重叠,它不可能直接使用
SnackBar
小部件。您可能需要为此创建自己的自定义小部件,然后将其包装在
堆栈中。此外,根据谷歌官方的说法,不建议使用重叠的
SnackBar
。此外,如果我的答案解决了您的问题,请单击大复选框接受它作为答案。干杯