小编Sal*_*ala的帖子

Flutter - TabBarView内部的ListView丢失其滚动位置

我有一个非常简单的Flutter应用程序,带有两个视图的TabBarView(选项卡1选项卡2),其中一个(选项卡1)有一个带有许多简单文本窗口小部件的ListView,问题是我向下滚动ListView元素后的标签1,如果我刷卡从标签1标签2,最后我刷卡从 标签2选项卡1,在ListView控件之前的滚动位置标签1迷路.

这是代码:

import 'package:flutter/material.dart';

void main() {
  runApp(new MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      title: 'Flutter Demo',
      theme: new ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: new MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

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

  final String title;

  @override
  _MyHomePageState createState() => …
Run Code Online (Sandbox Code Playgroud)

listview scroll flutter

19
推荐指数
5
解决办法
8885
查看次数

Flutter - 实现InfiniteScroll视图

我正在尝试实现无限滚动功能.

我尝试使用ListView内部NotificationListener来检测Scroll事件,但我看不到一个事件,说明滚动是否已到达视图的底部.

哪个是实现这个目标的最佳方法?

dart flutter

15
推荐指数
5
解决办法
7503
查看次数

Flutter-使用带有动态Tab视图的TabBarView小部件实现导航抽屉

我正在尝试做一个我认为非常简单的Flutter应用程序,但是我无法弄清楚我的代码出了什么问题。

我有一个带抽屉小部件的Flutter应用程序。我正在使用此小部件制作“ 导航”抽屉,“ 抽屉”有一个ListView作为子级,而ListView包含用户可以选择的“ 视图”选项(A,B和C)。

由于应用程序的主页(MyHomePage)从StatefulWidget扩展而来,因此我加载新视图的唯一操作是调用setState方法以分配“控制变量”(viewName)的新值,因此我希望Flutter执行MyHomePageWidget build(BuildContext context)方法,但是这次使用viewName的新值。

以上所有方法均按预期工作,问题在于在Scaffoldbody字段中有一个TabBarView小部件,因为我想向用户显示每个视图带有两个选项卡(选项卡1选项卡2)的视图(A,B和C)。

TabBarView孩子们:

- 选项卡1的StatefulTab对象

- 用于Tab 2的简单Center小部件

我要在这里演示的是,当您点击Drawer的一个选项(例如,加载B视图)时,Tab 2会按预期更改其值,但是Tab 1(包含有状态的小部件)在更改时不会更改其值您点击抽屉的任何其他选项

注意:必须对3个视图使用相同的StatefulTab …

tabs dart navigation-drawer flutter

6
推荐指数
1
解决办法
4544
查看次数

Flutter-NavigatorObserver类如何工作?

我试图检测导航器何时执行基本操作(pushpop),我发现实现该功能的类是NavigatorObserver类,但是找不到如何工作的示例。

我已经尝试实现接口:

class MyClassState extends State<MyClass> with NavigatorObserver{

    ....

    @override
    void didPop(Route<dynamic> route, Route<dynamic> previousRoute) {
        print('This is never get called');
    }

    @override
    void didPush(Route<dynamic> route, Route<dynamic> previousRoute) {
        print('This is never get called');
    }
}
Run Code Online (Sandbox Code Playgroud)

当然,我在调用Navigator.of(context).push(...); 但是重写方法永远不会被调用。

我怀疑与导航器的绑定丢失了,但是我不确定。

有什么建议么?

提前致谢!

编辑:

我认为我想做的事情很简单,但是我不知道该怎么做。

我有一个网页A是推动网页B

网页B我有一个周期性的计时器必须要在那里(在B页)。

所有我想要做的就是取消与计时器timer.cancel()时,网页B得到弹出了(与Android或后退按钮在appbar后退按钮),因为当网页B得到弹出仍在执行即使定时器网页B有没了

  • 我无法通过Navigator.pop()将计时器作为参数传递,因为我不处理后退按钮(应用程序栏中的后退按钮和Android后退按钮)。

编辑2:

-我找到了解决问题的方法,我所做的就是取消计时器

@override
void …
Run Code Online (Sandbox Code Playgroud)

dart flutter

2
推荐指数
2
解决办法
3353
查看次数

标签 统计

flutter ×4

dart ×3

listview ×1

navigation-drawer ×1

scroll ×1

tabs ×1