我有一个初学者问题。将 Widget 分解为它自己的类非常简单。就像在无状态小部件中有一个带有按钮的 Column,它在构造函数中接受一些函数和一些字符串。然后我可以在我的应用程序的任何屏幕和小部件中包含和使用它。
但是,这是如何通过对话框实现的呢?如果我设计一个对话框,我希望将它放在自己的文件中,这样我就可以导入它,然后将函数和文本传递给它。
现在我正在尝试从flutter_picker包中打开一个 Picker 对话框。在我的一个屏幕中,我有这个:
void _showTimeDialog() {
Picker(
adapter: NumberPickerAdapter(data: <NumberPickerColumn>[
NumberPickerColumn(begin: 0, end: 60, initValue: _minutes),
NumberPickerColumn(begin: 0, end: 60, initValue: _seconds),
]),
delimiter: <PickerDelimiter>[
PickerDelimiter(
child: Container(
width: 30.0,
alignment: Alignment.center,
child: Text(':'),
),
)
],
builderHeader: (context) {
return Padding(
padding: const EdgeInsets.symmetric(vertical: 20),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
Text('MINUTES'),
Container(
width: 30,
),
Text('SECONDS'),
],
),
);
},
hideHeader: false,
confirmText: 'OK',
diameterRatio: 1.3,
magnification: 1.3,
height: 100,
squeeze: 1,
title: Center(child: const Text('DURATION')),
selectedTextStyle: TextStyle(color: Theme.of(context).primaryColor),
onConfirm: (Picker picker, List<int> value) {
onConfirmDurationPicker(picker, value);
},
).showDialog(context);
}
void onConfirmDurationPicker(Picker picker, List<int> value) {
setState(() {
_minutes = picker.getSelectedValues()[0];
_seconds = picker.getSelectedValues()[1];
});
}
我想要的是把它放在它自己的文件中。然后我想传递 onConfirmDurationPicker 函数(它将在不同的屏幕上改变)和一些其他值来设置这个选取器。但我不想在需要这种选择器对话框的每个屏幕中复制所有这些代码。
在自己的类/文件中打破这样的东西的犹太洁食方式是什么?如果我的问题有什么不清楚的地方,请告诉我。