import 'package:flutter/material.dart';
import 'dart:ui';
class CourseDetails extends StatefulWidget {
@override
_CourseDetailsState createState() => _CourseDetailsState();
}
class _CourseDetailsState extends State<CourseDetails> {
final navTitle = ["章节", "详情", "评价"];
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
child: new Row(
children: navTitle
.map((item, {index}) => Container(
child: new Text(item),
width: MediaQuery.of(context).size.width / 3,
alignment: Alignment.center,
))
.toList()),
height: 40.0,
alignment: Alignment.center,
margin: EdgeInsets.only(top: MediaQueryData.fromWindow(window).padding.top), // 获取默认导航栏的高度
),
backgroundColor: Color.fromRGBO(245, 245, 245, 1),
);
}
}
注释:①{}代表参数可选,我这里还没用到,但是后面会用到,所有用{}包裹起来,否则会报错。
②.map()第一个参数代表value,我这里代表的就是章节、详情、评价。第二个参数代表索引值也就是下标:0、1、2。
注意:.toList()别忘了,不然会报错,建议写的时候先把.toList()写上去。
要是只想获取下标,将
navTitle .map((item, {index}) => Container(
child: new Text(item),
width: MediaQuery.of(context).size.width / 3,
alignment: Alignment.center,
))
.toList()
替换成
navTitle.asMap().keys.map((index) => Container(
child: new Text(navTitle[index]),
width: MediaQuery.of(context).size.width / 3,
alignment: Alignment.center,
)).toList()
就好了
效果如图: