我有一个全屏的Flutter应用程序。 但是问题是当用户触摸屏幕时,出现顶部状态栏,或者当用户触摸文本字段时,出现底部状态栏和顶部状态栏。
如何预防此问题。
这是我的使Flutter应用全屏显示的代码:
await SystemChrome.setPreferredOrientations(
[DeviceOrientation.landscapeRight]);
await SystemChrome.setEnabledSystemUIOverlays([]);
答案 0 :(得分:1)
对于 Textfield
,我解决的解决方案是在 Textfield 失去焦点时将用户返回到全屏模式(即隐藏状态和导航)...
class _SomeWidget extends State<SomeWidget> {
FocusNode _focus = new FocusNode();
void _onFocusChange(){
SystemChrome.setEnabledSystemUIOverlays([]); // hide status + action buttons
}
@override
void initState() {
super.initState();
_focus.addListener(_onFocusChange);
}
@override
Widget build(BuildContext context) {
return TextField(
focusNode: _focus,
...
);
}
}
答案 1 :(得分:0)
输出:
我不确定您在哪里使用该电话。这是最小的代码重现。
[Test]
public void Can_Save_Valid_Changes() {
//Arrange
var httpContext = new DefaultHttpContext();
var tempData = new TempDataDictionary(httpContext, Mock.Of<ITempDataProvider>());
var mock = new Mock<IProductRepository>();
AdminController controller = new AdminController(mock.Object);
controller.TempData = tempData;
Product product = new Product { Name = "Test"};
//Act
IActionResult result = controller.Edit(product);
//Assert
// check if have saved product to repo
mock.Verify(m => m.SaveProduct(product));
Assert.IsNotInstanceOf<ViewResult>(result);
Assert.IsTrue(tempData.ContainsKey("message"));
}