如何控制Flutter中两个部分之间的时间延迟?
How to control time delay between two sections in Flutter?
我正在制作一个包含两个部分的应用程序。一个是 PageView 部分,您可以使用滑动动作更改页面。另一个显示在您更改页面后您现在所在的页面。但是有时间延迟。当我将第一页之类的页面更改为第二页时,下部的更改大约有 0.5 秒的延迟。
为了查找任何原因,我将索引声明为double(现在重新声明为int)。我发现当我在第一部分 PageView 中更改页面时,下部显示小数变化(i.g。不是 1 -> 2,而是 1.0 -> 1.xxx -> 2)。
我还尝试了 Switch-case 语句。在此语句中,默认值为 returns Text('nothing')。而且改的时候发现下半部分什么都没有
import 'package:flutter/material.dart';
class HomePage extends StatefulWidget {
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
static final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
final controller = PageController(initialPage: 0);
var scrollDirection = Axis.horizontal;
var actionIcon = Icons.swap_vert;
int index;
@override
void initState() {
super.initState();
index = 0;
controller.addListener(() {
setState(() {
index = controller.page.toInt();
});
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
key: _scaffoldKey,
appBar: AppBar(
centerTitle: true,
title: Text('it\'s a drill for page view'),
),
body: _buildBody(),
);
}
Widget _buildBody() {
return SafeArea(
child: Column(
children: <Widget>[
Expanded(
child: PageView.builder(
controller: controller,
itemCount: 5,
itemBuilder: (context, index) {
return Text('it is $index');
},
)
),
Expanded(
child: FittedBox(
fit: BoxFit.fitWidth,
child: Container(
color: Colors.blue,
child: _showContent()
),
),
)
],
),
);
}
Widget _showContent() {
switch (index) {
case 0: return Text('One');
break;
case 1: return Text('Two');
break;
case 2: return Text('Three');
break;
case 3: return Text('Four');
break;
case 4: return Text('Five');
break;
default: return Text('Nothing');
}
}
}
我要二段不要有任何延误。有什么解决办法吗?
请帮我。我是一个真正的初学者。所以也许我请你原谅。但我从来没有让这个问题无人问津。非常感谢。
Timer(
Duration(seconds: 3),
(){ //return YOU CAN PUT YOUR STUFF HERE.});
可能PageController listener中对当前页面的值四舍五入更适合你。
修改后的监听器代码如下:
controller.addListener(() {
setState(() {
index = controller.page.round();
});
});
我正在制作一个包含两个部分的应用程序。一个是 PageView 部分,您可以使用滑动动作更改页面。另一个显示在您更改页面后您现在所在的页面。但是有时间延迟。当我将第一页之类的页面更改为第二页时,下部的更改大约有 0.5 秒的延迟。
为了查找任何原因,我将索引声明为double(现在重新声明为int)。我发现当我在第一部分 PageView 中更改页面时,下部显示小数变化(i.g。不是 1 -> 2,而是 1.0 -> 1.xxx -> 2)。 我还尝试了 Switch-case 语句。在此语句中,默认值为 returns Text('nothing')。而且改的时候发现下半部分什么都没有
import 'package:flutter/material.dart';
class HomePage extends StatefulWidget {
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
static final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
final controller = PageController(initialPage: 0);
var scrollDirection = Axis.horizontal;
var actionIcon = Icons.swap_vert;
int index;
@override
void initState() {
super.initState();
index = 0;
controller.addListener(() {
setState(() {
index = controller.page.toInt();
});
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
key: _scaffoldKey,
appBar: AppBar(
centerTitle: true,
title: Text('it\'s a drill for page view'),
),
body: _buildBody(),
);
}
Widget _buildBody() {
return SafeArea(
child: Column(
children: <Widget>[
Expanded(
child: PageView.builder(
controller: controller,
itemCount: 5,
itemBuilder: (context, index) {
return Text('it is $index');
},
)
),
Expanded(
child: FittedBox(
fit: BoxFit.fitWidth,
child: Container(
color: Colors.blue,
child: _showContent()
),
),
)
],
),
);
}
Widget _showContent() {
switch (index) {
case 0: return Text('One');
break;
case 1: return Text('Two');
break;
case 2: return Text('Three');
break;
case 3: return Text('Four');
break;
case 4: return Text('Five');
break;
default: return Text('Nothing');
}
}
}
我要二段不要有任何延误。有什么解决办法吗? 请帮我。我是一个真正的初学者。所以也许我请你原谅。但我从来没有让这个问题无人问津。非常感谢。
Timer(
Duration(seconds: 3),
(){ //return YOU CAN PUT YOUR STUFF HERE.});
可能PageController listener中对当前页面的值四舍五入更适合你。
修改后的监听器代码如下:
controller.addListener(() {
setState(() {
index = controller.page.round();
});
});