老师代码可以封装一下,你写得太乱了,看看我这个写法是不是好很多!
来源:6-5 StatefulWidget与基础组件【撑起Flutter的半边天】
iStream
2023-04-15
/**
* main.dart
*/
import 'package:flutter/material.dart';
void main() => runApp(const Page());
class Page extends StatefulWidget{
const Page({ Key ? key }) : super(key: key);
@override
DynmicPage createState() => DynmicPage();
}
/**
* 创建app
*/
class DynmicPage extends State<Page>{
int _currentIndex = 0;
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.red,
),
home: Scaffold(//页面框架
appBar: AppBar(
title: Text('页面框架学习'),
),
bottomNavigationBar: _bottomBar(),
body: _pageContents()
),
);
}
/***
* 底部的按钮组
*/
BottomNavigationBar _bottomBar(){
return BottomNavigationBar(//
currentIndex: _currentIndex,
onTap: (index){
setState(() {
_currentIndex = index;
});
},
items: [
BottomNavigationBarItem(
label: "home",
icon:Icon(Icons.home,color: Colors.grey),
activeIcon: Icon(Icons.home,color: Colors.red),
),
BottomNavigationBarItem(
label: "list",
icon:Icon(Icons.list,color: Colors.grey),
activeIcon: Icon(Icons.list,color: Colors.red),
),
],
);
}
/***
* 页面内容
*/
Container _pageContents(){
return _currentIndex == 0
?
Container(
color: Colors.lightGreen,
child: Center(child: Text("home",style: TextStyle(fontSize: 40),),),
)
:
Container(
color: Colors.teal,
child:RefreshIndicator(child: ListView(
children: [
Text("list1",style: TextStyle(fontSize: 40),),
Text("list2",style: TextStyle(fontSize: 40),),
Text("list3",style: TextStyle(fontSize: 40),),
Text("list4",style: TextStyle(fontSize: 40),)
],
), onRefresh: _handlRefrsh)
);
}
Future<Null>_handlRefrsh() async{
print('下啦刷新');
}
}
写回答
1回答
-
CrazyCodeBoy
2023-04-17
嗯,后面课程代码中有封装。
另外对于一些没有参数的但会返回一个widget的方法可以这样封装更加简洁:
BottomNavigationBar get _bottomBar => BottomNavigationBar(...)00
相似问题