Flutter 位于pdf(EasyWebView)顶部的窗口对话框(showDatePicker)的一部分不工作,也不响应
我使用两个插件:EasyWebView和showDatePicker。在EasyWebView中,我通过链接显示pdf。在某些情况下,我需要显示一个日期选择器对话框,使用showDatePicker,用户将在其中选择一个日期。问题是位于pdf(EasyWebView)顶部的窗口对话框(showDatePicker)部分不起作用。pdf侧面没有一个按钮不起作用。其余的按钮,不在表面上的pdf-工作 示例显示窗口对话框的A部分叠加在pdf上,不起作用,同时B部分工作正常 PDF(EasyWebView)小部件代码:Flutter 位于pdf(EasyWebView)顶部的窗口对话框(showDatePicker)的一部分不工作,也不响应,flutter,dart,datepicker,flutter-layout,flutter-web,Flutter,Dart,Datepicker,Flutter Layout,Flutter Web,我使用两个插件:EasyWebView和showDatePicker。在EasyWebView中,我通过链接显示pdf。在某些情况下,我需要显示一个日期选择器对话框,使用showDatePicker,用户将在其中选择一个日期。问题是位于pdf(EasyWebView)顶部的窗口对话框(showDatePicker)部分不起作用。pdf侧面没有一个按钮不起作用。其余的按钮,不在表面上的pdf-工作 示例显示窗口对话框的A部分叠加在pdf上,不起作用,同时B部分工作正常 PDF(EasyWebVi
Expanded(
flex: 2,
child: new Container(
padding: new EdgeInsets.only(left: 8.0, right: 8.0),
child: Card(
clipBehavior: Clip.antiAlias,
child: SizedBox(
height: 9000, // constrain height
child: EasyWebView(
src: widget.url, // API url
isHtml: false,
// Use Html syntax
isMarkdown: false,
// Use markdown syntax
convertToWidgets: false,
onLoaded: () {}, // Try to convert to flutter widgets
// width: 100,
// height: 100,
)),
),
),
);
return Padding(
padding: const EdgeInsets.only(top: 20.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Expanded(
flex: 1,
child: GestureDetector(
onTap: () async {
DateTime endDatePicked =
await showDatePicker(context: context, initialDate: _endDate, firstDate: _earliestEndDate, lastDate: _latestEndDate);
setState(() {
if (endDatePicked != null) {
_endDate = endDatePicked;
_selectedDateText = getFormattedDateValue(_endDate);
endDataLog.comment = _endDate.toString();
}
});
},
child: Container(
decoration: BoxDecoration(
border: Border(
bottom: BorderSide(width: 1.0, color: RendinColor.darkGrey),
),
),
child: TextFormField(
//enabled: false,
keyboardType: TextInputType.datetime,
readOnly: true,
onTap: () async {
DateTime endDatePicked = await showDatePicker(
context: context, initialDate: _endDate, firstDate: _earliestEndDate, lastDate: _latestEndDate);
setState(() {
if (endDatePicked != null) {
_endDate = endDatePicked;
_selectedDateText = getFormattedDateValue(_endDate);
endDataLog.comment = _endDate.toString();
}
});
},
validator: (val) => _selectedDateText == getFormattedDateValue(_endDate)
? null
: translate("agreement.termination.choose_date", context: context),
decoration: InputDecoration(hintText: _selectedDateText),
style: TextStyle(color: RendinColor.darkGrey),
),
),
),
)
],
),
);
对话框(showDatePicker)小部件代码:
Expanded(
flex: 2,
child: new Container(
padding: new EdgeInsets.only(left: 8.0, right: 8.0),
child: Card(
clipBehavior: Clip.antiAlias,
child: SizedBox(
height: 9000, // constrain height
child: EasyWebView(
src: widget.url, // API url
isHtml: false,
// Use Html syntax
isMarkdown: false,
// Use markdown syntax
convertToWidgets: false,
onLoaded: () {}, // Try to convert to flutter widgets
// width: 100,
// height: 100,
)),
),
),
);
return Padding(
padding: const EdgeInsets.only(top: 20.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Expanded(
flex: 1,
child: GestureDetector(
onTap: () async {
DateTime endDatePicked =
await showDatePicker(context: context, initialDate: _endDate, firstDate: _earliestEndDate, lastDate: _latestEndDate);
setState(() {
if (endDatePicked != null) {
_endDate = endDatePicked;
_selectedDateText = getFormattedDateValue(_endDate);
endDataLog.comment = _endDate.toString();
}
});
},
child: Container(
decoration: BoxDecoration(
border: Border(
bottom: BorderSide(width: 1.0, color: RendinColor.darkGrey),
),
),
child: TextFormField(
//enabled: false,
keyboardType: TextInputType.datetime,
readOnly: true,
onTap: () async {
DateTime endDatePicked = await showDatePicker(
context: context, initialDate: _endDate, firstDate: _earliestEndDate, lastDate: _latestEndDate);
setState(() {
if (endDatePicked != null) {
_endDate = endDatePicked;
_selectedDateText = getFormattedDateValue(_endDate);
endDataLog.comment = _endDate.toString();
}
});
},
validator: (val) => _selectedDateText == getFormattedDateValue(_endDate)
? null
: translate("agreement.termination.choose_date", context: context),
decoration: InputDecoration(hintText: _selectedDateText),
style: TextStyle(color: RendinColor.darkGrey),
),
),
),
)
],
),
);
如何解决此问题?解决方案是通过showDataPicker()的TransitionBuilder
参数使用
例如:
final date = await showDatePicker(
...,
builder: (ctx, child) => PointerInterceptor(child: child)
);
在您共享MRE之前,无法解决此问题。请考虑给我们看一些代码。然后社区可以提供帮助。除此之外,了解您正在测试的是哪个平台,哪个颤振版本会很有帮助。这将有助于隔离问题。@AbhilashChandran感谢您的评论。我添加了一个代码和颤振医生