Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart 制作一个非全屏颤振路线_Dart_Flutter - Fatal编程技术网

Dart 制作一个非全屏颤振路线

Dart 制作一个非全屏颤振路线,dart,flutter,Dart,Flutter,嗨,我正在尝试实现一个类似Instagram的导航系统。我想知道如何将非全屏窗口小部件推送到Navigator,同时使Navigator将窗口小部件推到我视图的子视图中(以使父窗口小部件中的底部选项卡保持固定)。查看了此页面和PageRouteBuilder,但完全了解如何做到这一点: 有人做到了吗 class _MainPage extends State<MainPage> { @override Widget build(BuildContext context) {

嗨,我正在尝试实现一个类似Instagram的导航系统。我想知道如何将非全屏窗口小部件推送到Navigator,同时使Navigator将窗口小部件推到我视图的子视图中(以使父窗口小部件中的底部选项卡保持固定)。查看了此页面和PageRouteBuilder,但完全了解如何做到这一点: 有人做到了吗

class _MainPage extends State<MainPage> {


 @override
  Widget build(BuildContext context) {
    return new Scaffold(
      appBar: new AppBar(
        title: new Text("Home Sweet Home"),
      ),
      body: new Column(
        children: <Widget>[
          PUT_NAVIGATOR_RESULT_HERE,
          new Row(
            children: <Widget>[
              new RaisedButton(onPressed: addWidget, child: new Text("home")),
              new RaisedButton(onPressed: addWidget, child: new Text("discover")),
              new RaisedButton(onPressed: addWidget, child: new Text("heart")),
              new RaisedButton(onPressed: addWidget, child: new Text("user")),
            ],
          )
        ],
      ),
    );
  }
  //... other functions 
}
class\u主页扩展状态{
@凌驾
小部件构建(构建上下文){
归还新脚手架(
appBar:新的appBar(
标题:新文本(“甜蜜家园”),
),
正文:新栏目(
儿童:[
把导航器结果放在这里,
新行(
儿童:[
新建RaisedButton(按下:添加小部件,子项:新建文本(“主页”),
新建RaisedButton(按下:添加小部件,子项:新文本(“发现”),
新建RaisedButton(按下:添加小部件,子项:新建文本(“心脏”),
新建RaisedButton(按下时:addWidget,子项:新建文本(“用户”),
],
)
],
),
);
}
//……其他职能
}

我已经用一堆小部件实现了我想要的功能,但这对hero不起作用:(.

您可以使用
页面视图
小部件

一个有效的例子:

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {

  int bottomSelectedIndex = 0;

  List<BottomNavigationBarItem> buildBottomNavBarItems() {
    return [
      BottomNavigationBarItem(
          icon: new Icon(Icons.home),
          title: new Text('Red')
      ),
      BottomNavigationBarItem(
        icon: new Icon(Icons.search),
        title: new Text('Blue'),
      ),
      BottomNavigationBarItem(
          icon: Icon(Icons.info_outline),
          title: Text('Yellow')
      )
    ];
  }

  PageController pageController = PageController(
    initialPage: 0,
    keepPage: true,
  );

  Widget buildPageView() {
    return PageView(
      controller: pageController,
      onPageChanged: (index) {
        pageChanged(index);
      },
      children: <Widget>[
        Red(),
        Blue(),
        Yellow(),
      ],
    );
  }

  @override
  void initState() {
    super.initState();
  }

  void pageChanged(int index) {
    setState(() {
      bottomSelectedIndex = index;
    });
  }

  void bottomTapped(int index) {
    setState(() {
      bottomSelectedIndex = index;
      pageController.animateToPage(index, duration: Duration(milliseconds: 500), curve: Curves.ease);
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: buildPageView(),
      bottomNavigationBar: BottomNavigationBar(
        currentIndex: bottomSelectedIndex,
        onTap: (index) {
          bottomTapped(index);
        },
        items: buildBottomNavBarItems(),
      ),
    );
  }
  }



class Red extends StatefulWidget {
  @override
  _RedState createState() => _RedState();
}

class _RedState extends State<Red> {
  @override
  Widget build(BuildContext context) {
    return Container(
      color: Colors.red,
    );
  }
}

class Blue extends StatefulWidget {
  @override
  _BlueState createState() => _BlueState();
}

class _BlueState extends State<Blue> {
  @override
  Widget build(BuildContext context) {
    return Container(
      color: Colors.blueAccent,
    );
  }
}

class Yellow extends StatefulWidget {
  @override
  _YellowState createState() => _YellowState();
}

class _YellowState extends State<Yellow> {
  @override
  Widget build(BuildContext context) {
    return Container(
      color: Colors.yellowAccent,
    );
  }}
导入“包装:颤振/材料.省道”;
void main()=>runApp(MyApp());
类MyApp扩展了无状态小部件{
//此小部件是应用程序的根。
@凌驾
小部件构建(构建上下文){
返回材料PP(
标题:“颤振演示”,
主题:主题数据(
主样本:颜色。蓝色,
),
主页:MyHomePage(标题:“颤振演示主页”),
);
}
}
类MyHomePage扩展StatefulWidget{
MyHomePage({Key,this.title}):超级(Key:Key);
最后的字符串标题;
@凌驾
_MyHomePageState createState()=>\u MyHomePageState();
}
类_MyHomePageState扩展状态{
int bottomSelectedIndex=0;
列出buildBottomNavBarItems(){
返回[
底部导航气压计(
图标:新图标(Icons.home),
标题:新文本(“红色”)
),
底部导航气压计(
图标:新图标(Icons.search),
标题:新文本(“蓝色”),
),
底部导航气压计(
图标:图标(Icons.info\u轮廓),
标题:文本(“黄色”)
)
];
}
PageController=PageController(
初始页:0,
基帕奇:是的,
);
Widget buildPageView(){
返回页面视图(
控制器:页面控制器,
onPageChanged:(索引){
页面更改(索引);
},
儿童:[
红色(),
蓝色(),
黄色(),
],
);
}
@凌驾
void initState(){
super.initState();
}
无效页面已更改(整型索引){
设置状态(){
bottomSelectedIndex=索引;
});
}
无效(整数索引){
设置状态(){
bottomSelectedIndex=索引;
pageController.animateToPage(索引,持续时间:持续时间(毫秒:500),曲线:Curves.ease);
});
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:文本(widget.title),
),
正文:buildPageView(),
底部导航栏:底部导航栏(
currentIndex:bottomSelectedIndex,
onTap:(索引){
指数;
},
项目:buildBottomNavBarItems(),
),
);
}
}
类Red扩展StatefulWidget{
@凌驾
_RedState createState()=>\u RedState();
}
类_RedState扩展状态{
@凌驾
小部件构建(构建上下文){
返回容器(
颜色:颜色,红色,
);
}
}
类Blue扩展了StatefulWidget{
@凌驾
_BlueState createState();
}
类_BlueState扩展状态{
@凌驾
小部件构建(构建上下文){
返回容器(
颜色:Colors.blueAccent,
);
}
}
类黄色扩展StatefulWidget{
@凌驾
_YellowState createState();
}
类_YellowState扩展了状态{
@凌驾
小部件构建(构建上下文){
返回容器(
颜色:Colors.yellowAccent,
);
}}

来源:

您是否考虑过使用底部导航栏?以下是从Flatter Gallery示例中测试该功能的代码。我已经尝试过了,但我希望每个选项卡都可以堆叠一些内容,并可以转到内部页面和其他内容….(就像instagram)可能与或重复