繁体   English   中英

颤动 TabBarView 有时不会在手势滑动时触发

[英]flutter TabBarView sometimes not triggering on gesture swipe

我正在使用 Flutter -Android 工作室。 我的主屏幕带有 TabBarView 控件(2 页)。 每个页面从 sqfite 数据库中获取数据。 两者都有相同的 statefull 小部件类,但我传递参数来查看数据库和显示。 问题:当我单击 tabbar header 时,显示的数据正常。 但是当我滑动选项卡时,它有时会起作用,有时不起作用。 按照下面的视频。 我已经检查过,如果完成滑动,似乎不会每次都触发 Build 事件。 带有 tabbarview 的主要小部件

屏幕记录

请注意,第一个选项卡只有 1 条记录,而第二个选项卡有 6 条记录。 tabClick 工作正常,但滑动有时无法正常工作。

body: TabBarView(
    controller: _tabController,
    children: [
      DisplayTransactions(
        tmptransType: TransactionType.enIncome,
        transacBloc: _transacBloc,
        SelectedItemsCount: bRowSelectionCount,
        onSelectionChanged: (count) {
          setState(() {
            bRowSelectionCount = count;
          });
        },
      ),
      // Center(child: Text("Page 1")),
      DisplayTransactions(
        tmptransType: TransactionType.enExpense,
        transacBloc: _transacBloc,
        SelectedItemsCount: bRowSelectionCount,
        onSelectionChanged: (count) {
          setState(() {
            bRowSelectionCount = count;
          });
        },
        //Center(child: Text("Page 2")),
      )
    ],
  ),

------ > 小部件将数据显示到每个标签栏页面的列表视图中

class DisplayTransactions extends StatefulWidget {
final TransactionType tmptransType;
final FinanceTransBlock transacBloc;
final Function onSelectionChanged;
int SelectedItemsCount;

/// -1 expense  1 income
DisplayTransactions(
{Key key,
@required this.tmptransType,
@required this.transacBloc,
this.SelectedItemsCount,
this.onSelectionChanged})
: super(key: key);

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

class _DisplayTransactionsState extends State<DisplayTransactions> {
var isSelected = false;
var mycolor = Colors.white;

// int iselectionCount = 0;


@override
Widget build(BuildContext context) {
widget.transacBloc.transacType = widget.tmptransType;
debugPrint("----------------------------- ${widget.tmptransType}");
if (widget.SelectedItemsCount == 0) {// if no rows selected, then reload database based on trans type, eg expense, or income.. etc
widget.transacBloc.refresh();
}

return StreamBuilder<List<FinanceTransaction>>(
stream: widget.transacBloc.transacations,
builder: (context, snapshot) {
if (snapshot.hasData) {
List<FinanceTransaction> list = snapshot.data;
// return  buildTaskListWal(snapshot.data);
return Padding(

该应用程序似乎需要一些时间来检索新数据。 尝试在 snapshot.data 上检查 null 并显示一个 circleProgressIndicator。

if (snapshot.data == null) {
  return CirgularProgressIndicator();
 } else {
//display data
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM