美文网首页
5-2 Flutter App首页框架搭建-Scaffold与P

5-2 Flutter App首页框架搭建-Scaffold与P

作者: 小码农小世界 | 来源:发表于2019-11-12 10:32 被阅读0次

    5-2 Flutter App首页框架搭建-Scaffold与PageView

    import 'package:flutter/material.dart';
    
    void main() => runApp(MyApp());
    
    class MyApp extends StatelessWidget {
      // This widget is the root of your application.
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          home: DefaultTabController(
            length: choices.length,
            child: Scaffold(
              appBar: AppBar(
                title: const Text('Tabbed AppBar'),
                bottom: TabBar(
                  isScrollable: true,
                  tabs: choices.map((Choice choice) {
                    return Tab(
                      text: choice.title,
                      icon: Icon(choice.icon),
                    );
                  }).toList(),
                ),
              ),
            body: TabBarView(
              children: choices.map((Choice choice) {
                return Padding(
                  padding: const EdgeInsets.all(16.0),
                  child: ChoiceCard(choice: choice),
                );
              }).toList(),
            ),
            ),
          ),
        );
      }
    }
    
    class Choice {
      const Choice({this.title, this.icon});
    
      final String title;
      final IconData icon;
    }
    
    const List<Choice> choices = const <Choice>[
      const Choice(title: 'CAR', icon: Icons.directions_car),
      const Choice(title: 'BICYCLE', icon: Icons.directions_bike),
      const Choice(title: 'BOAT', icon: Icons.directions_boat),
      const Choice(title: 'BUS', icon: Icons.directions_bus),
      const Choice(title: 'TRAIN', icon: Icons.directions_railway),
      const Choice(title: 'WALK', icon: Icons.directions_walk),
    ];
    
    class ChoiceCard extends StatelessWidget {
      const ChoiceCard({Key key, this.choice}) : super(key: key);
    
      final Choice choice;
    
      @override
      Widget build(BuildContext context) {
        final TextStyle textStyle = Theme.of(context).textTheme.display1;
        return Card(
          color: Colors.white,
          child: Center(
            child: Column(
              mainAxisSize: MainAxisSize.min,
              crossAxisAlignment: CrossAxisAlignment.center,
              children: <Widget>[
                Icon(choice.icon, size: 128.0, color: textStyle.color),
                Text(choice.title, style: textStyle),
              ],
            ),
          ),
        );
      }
    }
    

    运行效果如下

    Simulator Screen Shot - iPhone 11 Pro Max - 2019-11-12 at 10.31.06.png Simulator Screen Shot - iPhone 11 Pro Max - 2019-11-12 at 10.31.12.png

    相关文章

      网友评论

          本文标题:5-2 Flutter App首页框架搭建-Scaffold与P

          本文链接:https://www.haomeiwen.com/subject/euefictx.html