Ios 如何从数据库值创建cupertinoactionsheet
我试图返回一个cupertinoactionsheet,以便在未来的构建器上使用它。这些值存储在本地 到目前为止,我仅设法检索cupertinoactionsheetactions 我试着把整张行动单都退回,但都失败了 我们的目标是让应用程序看起来尽可能的本土化。 这就是我不想使用任何材质小部件的原因 有什么答案吗 多谢各位Ios 如何从数据库值创建cupertinoactionsheet,ios,flutter,Ios,Flutter,我试图返回一个cupertinoactionsheet,以便在未来的构建器上使用它。这些值存储在本地 到目前为止,我仅设法检索cupertinoactionsheetactions 我试着把整张行动单都退回,但都失败了 我们的目标是让应用程序看起来尽可能的本土化。 这就是我不想使用任何材质小部件的原因 有什么答案吗 多谢各位 void _modalBottomSheetMenu() { showCupertinoModalPopup( context: context,
void _modalBottomSheetMenu() {
showCupertinoModalPopup(
context: context,
builder: (builder) {
return new Container(
height: 450.0,
color: Color(0xFF737373),
child: new Container(
decoration: new BoxDecoration(
color: CupertinoColors.white,
borderRadius: new BorderRadius.only(
topLeft: const Radius.circular(10.0),
topRight: const Radius.circular(10.0))),
child:
// some more code
new FutureBuilder(
future: plates,
builder: (BuildContext context, AsyncSnapshot snapshot) {
switch (snapshot.connectionState) {
case ConnectionState.none:
case ConnectionState.waiting:
return new Text('loading...');
default:
if (snapshot.hasError)
return new Text('Error: ${snapshot.error}');
else
return createListView(context, snapshot);
}
},
)
])),
);
});
}
Widget createListView(BuildContext context, AsyncSnapshot snapshot) {
List<String> values = snapshot.data;
return new ListView.builder(
scrollDirection: Axis.vertical,
shrinkWrap: true,
itemCount: values.length,
itemBuilder: (BuildContext context, int index) {
return new Column(
children: <Widget>[
new CupertinoActionSheetAction(
//leading: new Icon(CupertinoIcons.directions_car),
child: new Text(values[index]),
onPressed: () => {
setState(() {
_carplate = values[index];
}),
Navigator.pop(context)
}),
],
);
},
);
}
void\u modalBottomSheetMenu(){
showcupbertinomodalpopup(
上下文:上下文,
建筑商:(建筑商){
退回新货柜(
高度:450.0,
颜色:颜色(0xFF737373),
子容器:新容器(
装饰:新盒子装饰(
颜色:铜色。白色,
borderRadius:仅限新的borderRadius(
左上角:常数半径。圆形(10.0),
右上角:常数半径。圆形(10.0)),
儿童:
//还有代码吗
新未来建设者(
未来:板块,
生成器:(BuildContext上下文,异步快照){
交换机(快照.连接状态){
案例连接状态。无:
案例连接状态。正在等待:
返回新文本('加载…');
违约:
if(snapshot.hasError)
返回新文本('Error:${snapshot.Error}');
其他的
返回createListView(上下文、快照);
}
},
)
])),
);
});
}
小部件createListView(构建上下文上下文,异步快照快照){
列表值=snapshot.data;
返回新的ListView.builder(
滚动方向:轴垂直,
收缩膜:对,
itemCount:values.length,
itemBuilder:(构建上下文,int索引){
返回新列(
儿童:[
新CupertinoActionAction(
//领先:新图标(CupertinoIcons.方向车),
子项:新文本(值[索引]),
按下:()=>{
设置状态(){
_carplate=值[指数];
}),
Navigator.pop(上下文)
}),
],
);
},
);
}
您应该在显示操作表之前检索值,然后在createListView
中传递值,而不是在快照中传递值。大概是这样的:
void _modalBottomSheetMenu() async {
List<String> values = await plates;
showCupertinoModalPopup(
context: context,
builder: (builder) {
return Container(
height: 450.0,
color: Color(0xFF737373),
child: new Container(
decoration: new BoxDecoration(
color: CupertinoColors.white,
borderRadius: new BorderRadius.only(
topLeft: const Radius.circular(10.0),
topRight: const Radius.circular(10.0))),
child: createListView(context, values),
),
);
},
);
}
Widget createListView(BuildContext context, List<String> values) {
return new ListView.builder(
scrollDirection: Axis.vertical,
shrinkWrap: true,
itemCount: values.length,
itemBuilder: (BuildContext context, int index) {
return new Column(
children: <Widget>[
new CupertinoActionSheetAction(
//leading: new Icon(CupertinoIcons.directions_car),
child: new Text(values[index]),
onPressed: () => {
setState(() {
_carplate = values[index];
}),
Navigator.pop(context)
}),
],
);
},
);
}
void\u modalBottomSheetMenu()异步{
列表值=等待板;
showcupbertinomodalpopup(
上下文:上下文,
建筑商:(建筑商){
返回容器(
高度:450.0,
颜色:颜色(0xFF737373),
子容器:新容器(
装饰:新盒子装饰(
颜色:铜色。白色,
borderRadius:仅限新的borderRadius(
左上角:常数半径。圆形(10.0),
右上角:常数半径。圆形(10.0)),
子级:createListView(上下文、值),
),
);
},
);
}
小部件createListView(构建上下文,列表值){
返回新的ListView.builder(
滚动方向:轴垂直,
收缩膜:对,
itemCount:values.length,
itemBuilder:(构建上下文,int索引){
返回新列(
儿童:[
新CupertinoActionAction(
//领先:新图标(CupertinoIcons.方向车),
子项:新文本(值[索引]),
按下:()=>{
设置状态(){
_carplate=值[指数];
}),
Navigator.pop(上下文)
}),
],
);
},
);
}
非常感谢
完整的代码是
Widget createListView(BuildContext context, List<String> values) {
return Container(
height: 300.0,
//width: 300.0,
child: new ListView.builder(
scrollDirection: Axis.vertical,
shrinkWrap: false,
itemCount: values.length,
itemBuilder: (BuildContext context, int index) {
return new Column(
children: <Widget> [
new CupertinoActionSheetAction(
child: new Text(values[index]),
onPressed: () => {
setState(() {
_carplate = values[index];
}),
Navigator.pop(context)
}),
]);
},
));
}
void _modalBottomSheetMenu() async {
List<String> values = await plates;
showCupertinoModalPopup(
context: context,
builder: (BuildContext context) => CupertinoActionSheet(
title: const Text('Choose Options'),
message: const Text('Your options are '),
actions: <Widget>[
createListView(context, values)
],
cancelButton: CupertinoActionSheetAction(
child: const Text('Cancel'),
isDestructiveAction: true,
onPressed: () {
Navigator.pop(context, 'Cancel');
},
),
),
);
Widget createListView(BuildContext上下文,列表值){
返回容器(
高度:300.0,
//宽度:300.0,
子项:新建ListView.builder(
滚动方向:轴垂直,
收缩膜:假,
itemCount:values.length,
itemBuilder:(构建上下文,int索引){
返回新列(
儿童:[
新CupertinoActionAction(
子项:新文本(值[索引]),
按下:()=>{
设置状态(){
_carplate=值[指数];
}),
Navigator.pop(上下文)
}),
]);
},
));
}
void _modalBottomSheetMenu()异步{
列表值=等待板;
showcupbertinomodalpopup(
上下文:上下文,
生成器:(BuildContext上下文)=>CupertinaActionSheet(
标题:常量文本(“选择选项”),
消息:const Text('您的选项为'),
行动:[
createListView(上下文、值)
],
取消按钮:CupertinoActionSheetAction(
子项:常量文本(“取消”),
IsDestructionAction:是的,
已按下:(){
pop(上下文“取消”);
},
),
),
);
尽管上述代码有效,但请注意,在一个容器中嵌入所有CupertinoActionSheetAction将导致在点击其中任何一个时突出显示所有CupertinoActionSheetAction
以下是颤振公司的官方文件:
Future<void> _handleClickMe() async {
return showCupertinoModalPopup<void>(
context: context,
builder: (BuildContext context) {
return CupertinoActionSheet(
title: Text('Favorite Dessert'),
message: Text('Please select the best dessert from the options below.'),
actions: <Widget>[
CupertinoActionSheetAction(
child: Text('Profiteroles'),
onPressed: () { /** */ },
),
CupertinoActionSheetAction(
child: Text('Cannolis'),
onPressed: () { /** */ },
),
CupertinoActionSheetAction(
child: Text('Trifie'),
onPressed: () { /** */ },
),
],
cancelButton: CupertinoActionSheetAction(
isDefaultAction: true,
child: Text('Cancel'),
onPressed: () { /** */ },
),
);
},
);
}
void _showActionSheetIOS(context, Customer customer) {
showCupertinoModalPopup(
context: context,
builder: (BuildContext context) => CupertinoActionSheet(
title: Text('Choose an option for ${customer.name}'),
message: const Text('Your options are '),
actions: _yourLstCustomerObjs
.map((item) => CupertinoActionSheetAction(
child: Text(item.option),
onPressed: () {
Navigator.pop(context);
_selectItem(item);
},
))
.toList(),
cancelButton: CupertinoActionSheetAction(
child: const Text('Cancel'),
isDefaultAction: true,
onPressed: () {
Navigator.pop(context, 'Cancel');
},
)),
);
}