我好像不明白下面的代码为什么会打印出来
built
三次(电话
State.build
)当你按下按钮显示
Overlay
把注意力集中在
Textfield
.
现在,我知道
MaterialApp
在另一个里面
材料聚丙烯
不是个好主意,这是问题的第二部分:为什么
Keyboard
(在物理设备上测试
Android 8.1.0
)当我移除
材料聚丙烯
包裹在
Scaffold
试着集中注意力
单行文本
? 有一个
材料聚丙烯
在根上
覆盖
Overlay.of(context)
应该找到。
import "package:flutter/material.dart";
import "package:flutter/services.dart";
void main() {
SystemChrome.setEnabledSystemUIOverlays([]);
runApp(
MaterialApp(
home: Scaffold(
body: MyOtherApp()
)
)
);
}
class MyAppState extends State<MyApp> {
TextEditingController controller = TextEditingController();
@override
Widget build(BuildContext context) {
controller.text = "placeholder";
return MaterialApp(
home: Scaffold(
body: (){
print("built");
return TextField(
controller: controller,
);
}()
)
);
}
}
class MyApp extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return MyAppState();
}
}
class MyOtherApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Center(
child: FlatButton(
child: Text(
"show overlay",
),
onPressed: () {
Overlay.of(context).insert(
OverlayEntry(
builder: (context) {
return MyApp();
}
)
);
}
)
);
}
}