BottomNavigationBar使用返回值和直接在里边写效率上有区别么?
来源:8-3 APP首页框架搭建-项目实践【搭了个框架】
_呵呵哒_
2019-05-10
在items我是使用返回值的形式,老师您看下代码,和老师直接写在里边的执行效率有区别么?
import 'package:flutter/material.dart';
import 'package:flutter_demo/fragment/HomeFragment.dart';
import 'package:flutter_demo/fragment/MyFragment.dart';
import 'package:flutter_demo/fragment/SearchFragment.dart';
import 'package:flutter_demo/fragment/ShootFragment.dart';
class MainActivity extends StatefulWidget {
@override
_MainActivityState createState() => _MainActivityState();
}
class _MainActivityState extends State<MainActivity> {
//定义显示的Page
final List<Widget> _pages = [
HomeFragment(),
SearchFragment(),
ShootFragment(),
MyFragment()
];
//定义显示的导航文本
final List<String> _titles = ['首页', '搜索', '旅拍', '我的'];
//定义显示的图标
final List<IconData> _icons = [
Icons.home,
Icons.search,
Icons.camera_alt,
Icons.person
];
//定义默认颜色
final Color _defaultColor = Colors.grey; //默认颜色
final Color _checkColor = Colors.blue; //选中颜色
//定义默认显示页面
int _currentPage = 0;
//定义PageView控制器
final PageController _controller = PageController(initialPage: 0);
@override
Widget build(BuildContext context) {
return Scaffold(
body: PageView(
children: _pages,
controller: _controller,
),
bottomNavigationBar: BottomNavigationBar(
items: _navItemLists(),
type: BottomNavigationBarType.fixed,
onTap: (index) {
_controller.jumpToPage(index);
setState(() {
_currentPage = index;
});
},
),
);
}
List<BottomNavigationBarItem> _navItemLists() {
List<BottomNavigationBarItem> _items = [];
_titles.asMap().forEach((i, v) {
_items.add(
BottomNavigationBarItem(
title: Text(
v,
style: TextStyle(
color: _currentPage != i ? _defaultColor : _checkColor),
),
icon: Icon(
_icons[i],
color: _currentPage != i ? _defaultColor : _checkColor,
),
activeIcon: Icon(
_icons[i],
color: _currentPage != i ? _defaultColor : _checkColor,
)),
);
});
return _items;
}
}
写回答
2回答
-
有区别,这样写每次渲染都会执行一次_titles.asMap() 数组遍历,但考虑到数组长度较小,性能影响可忽略不计
012019-05-15 -
_呵呵哒_
提问者
2019-05-10
每次setState后都会执行一次 _navItemLists方法,然后循环,这样写好么?
00
相似问题