Flutter 中的 Cupertino Picker 占用 100% 宽度。
我们如何给它定制样式?高度、宽度、边框?
我尝试将其放入具有宽度和所有内容的容器中,但没有成功。相反,当我为容器指定颜色时,出现了奇怪的软边背景。
我是Flutter开发的新手,我正在尝试通过单击触发CupertinoPicker
内部操作。showCupertinoModalPopup
CupertinoButton
选择之后Provinsi (Province)
,我可以Province
再次单击该按钮以重新选择,但是它应该是我确实选择的项目。
这是我的代码
showCupertinoModalPopup(
context: context,
builder: (_) {
return new SizedBox(
height: MediaQuery.of(context).size.height / 2,
child: new CupertinoPicker(
magnification: 1.2,
useMagnifier: true,
itemExtent: 32.0,
onSelectedItemChanged: (i) => setState(() => _chosenProvince = listProvince[i]),
children: r != null && listProvince != null ? listProvince.map((prov) {
return new Padding(
padding: const EdgeInsets.all(4.0),
child: new Text(
prov.name,
textAlign: TextAlign.center,
overflow: TextOverflow.ellipsis,
style: new TextStyle(
fontSize: 20.0,
),
),
);
}).toList(): [],),);});
Run Code Online (Sandbox Code Playgroud)
有initialValue
什么 …
我的应用程序中有 CupertinoDatePicker 以使用以下代码选择日期和时间:
formatColumn(
widget: Consumer<MainCalendarProvider>(
builder: (_, mcProvider, __) => SizedBox(
height: sizes.height(context) / 3.5,
child: CupertinoDatePicker(
initialDateTime: result['dateRevision'],
minimumDate: result['dateRevision'],
use24hFormat: true,
onDateTimeChanged: (dateChange) {
mcProvider.setSelectedDateFromCupertinoDatePicker( dateChange, );},
),
),
),
title: 'Date Activity'),
Run Code Online (Sandbox Code Playgroud)
一切正常,直到我在我的应用程序中添加了功能暗模式。在暗模式文本颜色 CupertinoDatePicker 仍然为黑色,我想将其更改为白色。在 CupertinoDatePicker 中,只有 backgroundcolor 属性。我已经尝试更改为红色、蓝色、绿色等,但文本仍为黑色。
我怎样才能改变这个?
谢谢。
我正在通过Flutter Gallery查看与CupertinoPicker相关的代码.
这是相关的代码提取:
child: new GestureDetector(
// Blocks taps from propagating to the modal sheet and popping.
// onTap: () { },
child: new SafeArea(
child: new CupertinoPicker(
scrollController: scrollController,
itemExtent: _kPickerItemHeight,
backgroundColor: CupertinoColors.white,
onSelectedItemChanged: (int index) {
setState(() {
print(_selectedItemIndex);
_selectedItemIndex = index;
});
},
children: new List<Widget>.generate(coolColorNames.length, (int index) {
return new Center(child:
new Text(coolColorNames[index]),
);
}),
),
),
),
Run Code Online (Sandbox Code Playgroud)
现在,我需要一个回调/监听器,当CupertinoPicker关闭时,换句话说,当用户做出选择并且他的选择是最终的时候,我需要知道他的最终选择是什么.
这里的用例是我想在底片关闭时根据他的最终选择进行api回调.
目前,由于只有onSelectedItemChanged的回调,因此我只能在用户旋转选择器时获取值.见下面的gif.
我看到BottomSheet小部件有一个onClosing回调:https://docs.flutter.io/flutter/material/BottomSheet-class.html
但是我很困惑如何获得它的实例,因为Flutter Gallery样本使用以下代码调用底层,并且没有方法从代码中获取底层:
new GestureDetector(
onTap: () async {
await showModalBottomSheet<void>(
context: context, …
Run Code Online (Sandbox Code Playgroud) 我是颤振的新手,我需要帮助。
我正在创建一个应用程序,用户可以在其中通过CupertinoPicker选择数据。
选择器工作正常,但我想改变它的风格。
不幸的是我不明白怎么做,我读了这个但我不能这样做,我想更改所选元素的颜色和大小,未选中元素的颜色和线条的颜色。
但我不知道我该怎么做。
请问有人能帮我理解吗?
代码是这样的:
Container(
?child: _showCupertinoPicker(
context,
book[currentPage].orari.map((orario) {
return Center(
child: Text(orario,
style: TextStyle(color: CupertinoColors.activeBlue
)));
}).toList())),
.
.
.
.
_showCupertinoPicker(BuildContext context, List<Widget> orariWidget) {
return CupertinoPicker(
backgroundColor: Colors.white,
onSelectedItemChanged: (value) {},
itemExtent: 40.0,
children: orariWidget,
);
}
Run Code Online (Sandbox Code Playgroud) 在flutter的图库中,有一个可以选择多列的CupertinoDatePicker,如何制作自定义的多列CupertinoPicker?
是否有可能使 CupertinoPicker 变得动态。例如,有城市二维数据(不需要异步数据,只需一个二维数组)。如果我选择一个州,那么子栏会显示这个州的城市。
谢谢你。
是否可以更改项目的默认位置 CupertinoPicker
为两行之间的中心?默认位置似乎更倾向于上线。
这是重现的代码 CupertinoPicker
import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: MyHomePage(),
);
}
}
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: CupertinoPicker(
itemExtent: 50,
onSelectedItemChanged: (int index) {
print(index);
},
children: <Widget>[
Text("Item 1"),
Text("Item 2"),
Text("Item 3"),
],
),
);
}
}
Run Code Online (Sandbox Code Playgroud)
这是它的样子:
感谢您的任何提示、提示和建议!
我创建了一个CupertinoDatePicker
小部件,初始值设置为一个变量。
当用户单击屏幕中的另一个小部件时,我想将选择器中的选定值更新为该变量值 - 但它不起作用(尽管CupertinoDatePicker
小部件被重建)。
这是一个错误还是我做错了什么?
代码(可以复制粘贴到 dartPad 中):
import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart';
final Color darkBlue = Color.fromARGB(255, 18, 32, 47);
final _time = DateTime.now();
int _min = 5;
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData.dark().copyWith(scaffoldBackgroundColor: darkBlue),
debugShowCheckedModeBanner: false,
home: Scaffold(
body: Center(
child: MyWidget(),
),
),
);
}
}
class MyWidget extends StatefulWidget {
@override
createState() => MyWidgetSate();
}
class MyWidgetSate extends State<MyWidget> { …
Run Code Online (Sandbox Code Playgroud) 目前,在我的 flutter 应用程序中实现默认小部件 CupertinoDatePicker。在这个日期选择器中,我想要用户不能选择今天前一天的功能。用户应该只能选择未来和今天的日期。
所以,我正确地传递了“minimumDate:DateTime.now()”属性,但是当 CupertinoDatePicker 被打开时,它向我显示了今天之前的一个日期。我已经检查了“DateTime.now()”属性的值。它正确显示当前时间,但从 CupertinoDatePicker 小部件中出现问题。
CupertinoDatePicker(
minimumDate: DateTime.now(),
minuteInterval: 1,
mode: CupertinoDatePickerMode.dateAndTime,
onDateTimeChanged: (DateTime dateTime) {
print("dateTime: ${dateTime}");
},
)
Run Code Online (Sandbox Code Playgroud)
另外,应用了“flutter clean”命令。仍然面临同样的问题。
任何人都可以提出一个可行的解决方案吗?
谢谢。