根据颤振中的平台自动选择原生组件/小部件



如何在颤振中根据平台自动选择组件/小部件。

例如,如果我们在ios中使用下拉菜单,它应该是一个选择器,而在android中,它应该是网络上的弹出窗口和普通下拉菜单。

本机组件将在 UI/UX 角度提供额外的良好外观。

如果我们对每个小部件进行平台检查,代码就会变得混乱。

例如:

样品库比蒂诺拾取器

GestureDetector(
child: Text("Date"),
onTap: () {
showModalBottomSheet(
context: context,
builder: (BuildContext builder) {
return Scaffold(
appBar: AppBar(
title: Text(
"CupertinoPicker",
textAlign: TextAlign.justify,
),
backgroundColor: Colors.teal,
actions: <Widget>[
IconButton(
icon: Icon(Icons.send),
onPressed: () {},
)
],
),
body: Container(
child: CupertinoPicker(
magnification: 1.5,
backgroundColor: Colors.black87,
children: <Widget>[
Text(
"TextWidget",
style: TextStyle(
color: Colors.white, fontSize: 20),
),
MaterialButton(
child: Text(
"Button Widget",
style: TextStyle(color: Colors.white),
),
color: Colors.redAccent,
),
IconButton(
icon: Icon(Icons.home),
color: Colors.white,
iconSize: 40,
onPressed: () {},
)
],
itemExtent: 50, //height of each item
onSelectedItemChanged: (int index) {
selectitem = index;
},
),
));
});
},
),

在这里,我集成了一个样本选择器,并为其集成花费了很多行,而在 android 中,原生感觉不存在。在ios中很好看。

您可以编写任何支持这两个平台的小部件:

class ProgressBar extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Theme
.of(context)
.platform == TargetPlatform.iOS ?
CupertinoActivityIndicator() : CircularProgressIndicator();
}
}

因此,上述方法相应地构建小部件iOS和Android/fuchsia。您可以定义任何这样的小部件

最新更新