Flutter - 无法将应用栏设置为脚手架的小部件
Flutter - Cannot set an appbar as a widget to the scaffold
我想创建一个响应式应用栏,而无需 setState
整个脚手架发生变化时。问题是我可以将 BottomNavigationBar
小部件设置为脚手架的 bottomNavigationBar
,但我不能将 AppBar
设置为 appBar
。我得到这个错误
The argument type 'TopBar' can't be assigned to the parameter type 'PreferredSizeWidget'
我只用 State
部分简化了代码。
class StateLayoutNav extends State<LayoutNav>{
@override
Widget build(BuildContext context) => Scaffold(
bottomNavigationBar : BottomBar(), appBar : TopBar()
);
}
class StateTopBar extends State<TopBar>{
@override
Widget build(BuildContext context) => AppBar();
}
class StateBottomBar extends State<BottomBar>{
@override
Widget build(BuildContext context) => BottomNavigationBar();
}
尝试appBar: TopBar() as PreferredSizeWidget
我的解决方案是使用 PreferredSizeWidget 实现您的 Appbar 小部件,因为 Appbar 需要是 preferredSize
class TopBar extends StatefulWidget with PreferredSizeWidget {
TopBar({Key key}) : preferredSize = Size.fromHeight(kToolbarHeight), super(key: key);
@override
final Size preferredSize;
@override
StateTopBar createState() => StateTopBar();
}
class StateTopBar extends State<TopBar>{
@override
Widget build(BuildContext context) => AppBar();
}
试试这个。它将为您提供带有任何可自定义小部件的自定义应用程序栏。您可以添加固定容器。解决方案是使用 PreferredSizeWidget 实现应用栏。
class TopBar extends StatefulWidget implements PreferredSizeWidget {
TopBar({Key? key}) : preferredSize = Size.fromHeight(kToolbarHeight), super(key: key);
@override
final Size preferredSize; // default is 56.0
@override
_TopBarState createState() => _TopBarState();
}
class _TopBarState extends State<TopBar>{
@override
Widget build(BuildContext context) {
return Container( child: Text("Sample App Bar") );
}
}
我想创建一个响应式应用栏,而无需 setState
整个脚手架发生变化时。问题是我可以将 BottomNavigationBar
小部件设置为脚手架的 bottomNavigationBar
,但我不能将 AppBar
设置为 appBar
。我得到这个错误
The argument type 'TopBar' can't be assigned to the parameter type 'PreferredSizeWidget'
我只用 State
部分简化了代码。
class StateLayoutNav extends State<LayoutNav>{
@override
Widget build(BuildContext context) => Scaffold(
bottomNavigationBar : BottomBar(), appBar : TopBar()
);
}
class StateTopBar extends State<TopBar>{
@override
Widget build(BuildContext context) => AppBar();
}
class StateBottomBar extends State<BottomBar>{
@override
Widget build(BuildContext context) => BottomNavigationBar();
}
尝试appBar: TopBar() as PreferredSizeWidget
我的解决方案是使用 PreferredSizeWidget 实现您的 Appbar 小部件,因为 Appbar 需要是 preferredSize
class TopBar extends StatefulWidget with PreferredSizeWidget {
TopBar({Key key}) : preferredSize = Size.fromHeight(kToolbarHeight), super(key: key);
@override
final Size preferredSize;
@override
StateTopBar createState() => StateTopBar();
}
class StateTopBar extends State<TopBar>{
@override
Widget build(BuildContext context) => AppBar();
}
试试这个。它将为您提供带有任何可自定义小部件的自定义应用程序栏。您可以添加固定容器。解决方案是使用 PreferredSizeWidget 实现应用栏。
class TopBar extends StatefulWidget implements PreferredSizeWidget {
TopBar({Key? key}) : preferredSize = Size.fromHeight(kToolbarHeight), super(key: key);
@override
final Size preferredSize; // default is 56.0
@override
_TopBarState createState() => _TopBarState();
}
class _TopBarState extends State<TopBar>{
@override
Widget build(BuildContext context) {
return Container( child: Text("Sample App Bar") );
}
}