我目前正在制作一个日历应用程序,我想向右或向左滑动以转到下个月或上个月。我通过最初设置一个包含 3 个项目的数组来使用 PageView,并且初始页面是第二个页面。我想向右滑动并在最后添加一个页面。我想向左滑动并在开头添加一个页面。目前,如果你向右走(在最后添加页面),效果很好。但是,如果您向左移动(在开头添加页面),则会出现一些奇怪的行为,并且根本不起作用。
我在下面粘贴了一个带有计数器的简单示例。我不确定我是否做得对,或者我的逻辑是否成立。任何人都可以让我知道这样做的正确方法吗?
import 'package:flutter/material.dart';
void main() => runApp(LimeApp());
class LimeApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Pageview Test',
home: MainPage(),
);
}
}
int _lowerCount = -1;
int _upperCount = 1;
class MainPage extends StatelessWidget {
final List<Widget> _pages = <Widget>[
new Center(child: new Text("-1", style: new TextStyle(fontSize: 60.0))),
new Center(child: new Text("0", style: new TextStyle(fontSize: 60.0))),
new Center(child: new Text("1", style: new TextStyle(fontSize: 60.0)))
];
@override
Widget build(BuildContext context) {
return …
Run Code Online (Sandbox Code Playgroud) 我正在学习扑腾,我正在使用tabBars,我遇到了保存状态的问题.我在下面提出了一个小问题.基本上,有一个按钮和一个有状态的计数器.当我单击按钮时,我看到文本字段正确更新.但是,当我切换到另一个选项卡并返回时,文本字段将返回零.
我发现如果我在_CounterState之外移动以下行,使其在文件的顶层定义,那么,它可以正常工作.当我切换标签时,当我切换回时,计数器保持正确的计数
int _counter = 0;
Run Code Online (Sandbox Code Playgroud)
我觉得这不是这样做的合适方式,我看到的所有例子都在类中有变量.任何人都可以给我任何见解吗?如果它在课堂内,为什么会重置?我应该把它放在课外吗?以下是简化的完整示例.
import 'package:flutter/material.dart';
void main() {
runApp(new TabBarDemo());
}
class TabBarDemo extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new MaterialApp(
home: new DefaultTabController(
length: 3,
child: new Scaffold(
appBar: new AppBar(
bottom: new TabBar(
tabs: [
new Tab(icon: new Icon(Icons.directions_car)),
new Tab(icon: new Icon(Icons.directions_transit)),
new Tab(icon: new Icon(Icons.directions_bike)),
],
),
title: new Text('Tabs Demo'),
),
body: new TabBarView(
children: [
new Counter(),
new Icon(Icons.directions_transit),
new Icon(Icons.directions_bike),
],
),
),
),
);
} …
Run Code Online (Sandbox Code Playgroud) 我想在StatefulWidget中使用flutter通知与另一个StatefulWidget小部件进行通信。我在下面发布了一个我认为应该正常工作的示例,但事实并非如此。当您单击“ +”图标按钮时,它应将通知发送到subPage小部件。当前,当您单击按钮时,似乎什么都没有发生。我希望可以执行onTitlePush()函数。这是我第一次尝试使用“通知”,而且我必须设置不正确。我在更大的应用程序中使用了此代码,但是下面的代码只是实现的示例。你能告诉我我哪里出问题了吗?
import 'package:flutter/material.dart';
void main() => runApp(TestApp());
class TestApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Notificaton Test',
home: MainPage(),
);
}
}
class MyNotification extends Notification {
final String title;
const MyNotification({this.title});
}
class MainPage extends StatefulWidget {
@override
MainPageState createState() {
return new MainPageState();
}
}
class MainPageState extends State<MainPage> {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Basic AppBar'),
actions: <Widget>[
// action button
IconButton(
icon: …
Run Code Online (Sandbox Code Playgroud)