tin*_*hew 6 flutter flutter-dependencies flutter-layout
请找到我创建的代码。我面临的问题是,当我增加页面视图的项目计数时,第三个项目被称为 thrise。如果有任何解决办法,请告诉我。我认为这是由于 setState 重建小部件而发生的。如果我评论 setState 它将起作用,但动态页面创建不起作用。让我知道解决这个问题的方法。
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import '../sub_screens/single_article_item.dart';
import '../sub_screens/two_article_item.dart';
import '../sub_screens/three_article_item.dart';
class ArticleScreen extends StatefulWidget {
@override
_ArticleScreenState createState() => _ArticleScreenState();
}
class _ArticleScreenState extends State<ArticleScreen> {
var homeDataList = List<Home>();
int _pageNo = 3;
void setPageNo(int page) {
setState(() {
_pageNo = page;
});
//notifyListeners();
}
@override
Widget build(BuildContext context) {
final vm = Provider.of<HomeViewModel>(context, listen: false);
homeDataList.add(Home("First Article Screen"));
homeDataList.add(Home("Second Article Screen"));
homeDataList.add(Home("Other type Article Screen"));
PageController controller = PageController(
keepPage: false,
initialPage: 0,
);
var currentPageValue = 0.0;
// return ChangeNotifierProvider(create: (ctx)=> LocationProvider(),child:MaterialApp(
// home: Scaffold(body: Container(child: LocationScreen(),)),
// ));
// }
// }
return MaterialApp(
home: SafeArea(
child: Scaffold(
body: Container(
child: PageView.builder(
controller: controller,
itemBuilder: (context, position) {
if (position == 0) {
//vm.fetchHomeData(":::third page");
print('first article');
return SingleArticleItem();
} else if (position == 1) {
print('two article');
return TwoArticleItem();
} else {
print("third article " +
_pageNo.toString() +
"::" +
position.toString());
return ThreeArticleItem(vm.getPageNo, vm.getHomeData);
}
},
onPageChanged: (index) {
if (index >= 1) {
// print('onPageChanged - two article');
controller.addListener(() {
setState(() {
currentPageValue = controller.page;
_pageNo = _pageNo + 1;
// print('onPageChanged - three article');
});
});
}
},
// itemCount: vm.getPageNo,
itemCount: vm.getPageNo,
scrollDirection: Axis.vertical,
),
),
),
),
);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
838 次 |
| 最近记录: |