Flutter 颤振Web持久标头

Flutter 颤振Web持久标头,flutter,flutter-layout,Flutter,Flutter Layout,随着Flitter for web的引入,我试图实现一个网站风格的标题,在使用路由和整个应用程序时,它是持久的。Appbar似乎不是解决方案,因为每个脚手架都有自己的Appbar。我用MaterialApp创建了列中的标题小部件。然而,这种实现感觉是错误的,因为所有东西都应该是MaterialApp或CupertinoApp的子对象 如果搜索栏标题可以放在MaterialApp中,并且我可以使用Navigator,那将是首选。我真的是来寻求指导和“正确”的方法 void main(){ init

随着Flitter for web的引入,我试图实现一个网站风格的标题,在使用路由和整个应用程序时,它是持久的。Appbar似乎不是解决方案,因为每个脚手架都有自己的Appbar。我用
MaterialApp
创建了
列中的标题小部件。然而,这种实现感觉是错误的,因为所有东西都应该是MaterialApp或CupertinoApp的子对象

如果搜索栏标题可以放在MaterialApp中,并且我可以使用Navigator,那将是首选。我真的是来寻求指导和“正确”的方法

void main(){
initKiwi();
//BlocSupervisor().delegate=AppBlocDelegate();
runApp(MyApp());
}
类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回列(子项:[
材料(
标高:2.0,
颜色:颜色,白色,
子项:MediaQuery(
数据:MediaQueryData.fromWindow(ui.window),
孩子:方向性(
textDirection:textDirection.ltr,
子:容器(
身高:50,
子项:搜索栏(),
),
),
),
),
扩大(
孩子:MaterialApp(
标题:“发现布林德尔”,
主题:主题数据(
主样本:颜色。蓝色,
fontFamily:'Brdl',
),
主页:文本(“此处的页面和路线”),
),
),
]);
}
}

虽然它没有使用路由,但我可以使用
IndexedStack
解决这个问题。这还保留了我在关闭搜索页面时在
ProductsPage()
中所做的任何滚动。AppBar是持久的,能够将代码保持在最低限度

主飞镖

类MyApp扩展了无状态小部件{
//此小部件是应用程序的根。
@凌驾
小部件构建(构建上下文){
返回材料PP(
标题:“发现布林德尔”,
主题:主题数据(
主样本:颜色。蓝色,
fontFamily:“Brdl”
),
主页:主页(),
);
}
}
主页。省道

class主页扩展StatefulWidget{
@凌驾
_MainPageState createState()=>\u MainPageState();
}
类_MainPageState扩展状态{
final _searchBloc=kiwi.Container().resolve();
final _productsBloc=kiwi.Container().resolve();
页面控制器;
int currentPage=0;
void _onSearchActive({bool isActive}){
设置状态(){
this.currentPage=isActive?1:0;
});
}
@凌驾
小部件构建(构建上下文){
返回手势检测器(
onTap:(){
FocusScope.of(context).requestFocus(newfocusnode());
},
子项:_buildScaffold(),
);
}
小部件_buildScaffold(){
返回BlocProviderTree(
blocProviders:[
BlocProvider(bloc:_searchBloc),
BlocProvider(集团:_productsBloc),
],
孩子:脚手架(
appBar:appBar(
背景颜色:Colors.white,
标题:搜索栏(onIsActive:_onSearchActive),
),
正文:IndexedStack(
儿童:[
ProductsPage(),
SearchPage(),
],
索引:currentPage,
),
),
);
}
}

虽然它没有使用路由,但我可以使用
IndexedStack
解决这个问题。这还保留了我在关闭搜索页面时在
ProductsPage()
中所做的任何滚动。AppBar是持久的,能够将代码保持在最低限度

主飞镖

类MyApp扩展了无状态小部件{
//此小部件是应用程序的根。
@凌驾
小部件构建(构建上下文){
返回材料PP(
标题:“发现布林德尔”,
主题:主题数据(
主样本:颜色。蓝色,
fontFamily:“Brdl”
),
主页:主页(),
);
}
}
主页。省道

class主页扩展StatefulWidget{
@凌驾
_MainPageState createState()=>\u MainPageState();
}
类_MainPageState扩展状态{
final _searchBloc=kiwi.Container().resolve();
final _productsBloc=kiwi.Container().resolve();
页面控制器;
int currentPage=0;
void _onSearchActive({bool isActive}){
设置状态(){
this.currentPage=isActive?1:0;
});
}
@凌驾
小部件构建(构建上下文){
返回手势检测器(
onTap:(){
FocusScope.of(context).requestFocus(newfocusnode());
},
子项:_buildScaffold(),
);
}
小部件_buildScaffold(){
返回BlocProviderTree(
blocProviders:[
BlocProvider(bloc:_searchBloc),
BlocProvider(集团:_productsBloc),
],
孩子:脚手架(
appBar:appBar(
背景颜色:Colors.white,
标题:搜索栏(onIsActive:_onSearchActive),
),
正文:IndexedStack(
儿童:[
ProductsPage(),
SearchPage(),
],
索引:currentPage,
),
),
);
}
}