Flutter 如何在Flatter中创建多行SnackBar?

Flutter 如何在Flatter中创建多行SnackBar?,flutter,Flutter,如何在Flatter中创建多行SnackBar?有什么简单的方法可以在内容下方显示操作按钮吗 允许使用内容下方带有按钮的快捷键: 实现这种快捷键没有简单的方法 您可以尝试使用MultiChildRenderObjectWidget来布局SnackBar的元素,并将其作为普通SnackBar的内容提供(因为Scaffold要求快餐吧小部件的类型为SnackBar方法中的SnackBar) 在这里,您可以找到一个示例实现: //MIT许可证 // //版权所有(c)2020多米尼克·罗斯科夫斯基

如何在Flatter中创建多行SnackBar?有什么简单的方法可以在内容下方显示操作按钮吗

允许使用内容下方带有按钮的快捷键:


实现这种快捷键没有简单的方法

您可以尝试使用
MultiChildRenderObjectWidget
来布局SnackBar的元素,并将其作为普通
SnackBar
内容提供(因为
Scaffold
要求快餐吧小部件的类型为
SnackBar
方法中的
SnackBar

在这里,您可以找到一个示例实现:

//MIT许可证
//
//版权所有(c)2020多米尼克·罗斯科夫斯基
//
//注意:基于
// https://gist.github.com/slightfoot/4bb57f9ba7c4db46c8bedb33cdf9b93e
//Simon Lightfoot根据麻省理工学院许可证授权
//
//特此向任何获得副本的人免费授予许可
//本软件和相关文档文件(“软件”)的
//在软件中不受限制,包括但不限于权利
//使用、复制、修改、合并、发布、分发、再许可和/或销售
//软件的副本,并允许向其提供软件的人员
//按照以下条件提供:
//
//上述版权声明和本许可声明应包含在所有
//软件的副本或大部分。
//
//本软件按“原样”提供,无任何形式的明示或明示担保
//默示,包括但不限于适销性保证,
//适用于特定目的和非侵权。在任何情况下
//作者或版权持有人应承担任何索赔、损害或其他责任
//无论是在合同诉讼、侵权诉讼或其他诉讼中,由以下原因引起的责任:,
//与本软件有关,或与本软件的使用或其他交易有关
//软件。
//
导入'dart:math'作为数学;
进口“包装:颤振/材料.省道”;
导入“package:flatter/rendering.dart”;
void main(){
runApp(MyApp());
}
类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回材料PP(
标题:“颤振演示”,
主题:主题数据(
主样本:颜色。蓝色,
视觉密度:视觉密度。自适应平台密度,
),
主页:MyHomePage(标题:“颤振演示主页”),
);
}
}
类MyHomePage扩展StatefulWidget{
MyHomePage({Key,this.title}):超级(Key:Key);
最后的字符串标题;
@凌驾
_MyHomePageState createState()=>\u MyHomePageState();
}
类_MyHomePageState扩展状态{
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:文本(widget.title),
),
正文:PageContent(),
);
}
}
类PageContent扩展了无状态小部件{
常量页面内容({
关键点,
}):super(key:key);
@凌驾
小部件构建(构建上下文){
返回SingleChildScrollView(
子:列(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
扁平按钮(
子项:文本('显示浮动长snackbar'),
已按下:(){
Scaffold.of(上下文).showSnackBar(
自定义快捷键(
内容:文本('具有长多行内容的SnackBar'
'具有长多行内容的SnackBar'
“具有长多行内容的SnackBar”。),
行动:SnackBarAction(
标签:“完成”,
按下:(){},
),
行为:SnackBarBehavior.floating,
),
);
},
),
扁平按钮(
子项:文本('Show fixed long snackbar'),
已按下:(){
Scaffold.of(上下文).showSnackBar(
自定义快捷键(
内容:文本('具有长多行内容的SnackBar'
'具有长多行内容的SnackBar'
“具有长多行内容的SnackBar”。),
行动:SnackBarAction(
标签:“完成”,
按下:(){},
),
行为:SnackBarBehavior.fixed,
),
);
},
),
扁平按钮(
子项:文本('Show snackbar'),
已按下:(){
Scaffold.of(上下文).showSnackBar(
自定义快捷键(
内容:文本(“SnackBar”),
行动:SnackBarAction(
标签:“完成”,
按下:(){},
),
行为:SnackBarBehavior.floating,
),
);
},
),
尺寸箱(高度:8.0),
自定义快捷键(
内容:文本(“SnackBar”),
行动:SnackBarAction(
标签:“完成”,
按下:(){},
),
动画:AlwaysStoppedAnimation(1.0),
),
尺寸箱(高度:8.0),
自定义快捷键(
内容:文本('具有长多行内容的SnackBar'
'具有长多行内容的SnackBar'
“一行或两行字符串。”),
行动:SnackBarAction(
标签:“较长的操作文本”,
按下:(){},
),
动画:AlwaysStoppedAnimation(1.0),
),
自定义快捷键(
内容:文本('具有长多行内容的SnackBar'
“Aa bb cc dd ee ff gg hh”),
行动:SnackBarAction(
标签:“操作文本”,
按下:(){},
),
动画:AlwaysStoppedAnimation(1.0),
),
尺寸箱(高度:8.0),
自定义快捷键(