• flutter 底部按钮切换页面


    界面如图:

    我们就从上节里面的app.dartt修改

    目录:lib

    lib/story

    其它两个目录一样。

    图片配置一下

    app.dart

    import 'package:flutter/material.dart';
    import 'cast/cast.dart';
    import 'story/story.dart';
    import 'derivative/derivative.dart';
    void main() => runApp(App());
    
    class App extends StatefulWidget {
      @override
      _MyApp  createState() => new _MyApp();
    }
    
    class _MyApp extends State<App> {
      // 当前选中页索引
      var _currentIndex  = 0;
      currentPage() {
        switch (_currentIndex) {
          case 0:
            return new Story();
          case 1:
            return new CastApp();
          case 2:
            return new Derivative();
          default:
        }
      }
    
      @override
      Widget build(BuildContext context) {
        // TODO: implement build
        return new Scaffold(
          // 底部导航按钮
          bottomNavigationBar: new BottomNavigationBar(
            // 通过fixedColor设置选中的item的颜色
            type: BottomNavigationBarType.fixed,
            // 当前页面索引
            currentIndex: _currentIndex,
            // 按下后设置当前页面索引
            onTap: ((index){
              setState(() {
                _currentIndex = index;
              });
            }),
            // 底部导航按钮选项
            items: [
              new BottomNavigationBarItem(
                title:new Text(
                  'ストーリー',
                  style: TextStyle(
                    color: _currentIndex == 0 ? Color(0xFF46c01b) : Color(0xff999999),
                  ),
                ),
                // 判断当前索引做图片切换显示
                icon: _currentIndex == 0 ? Image.asset('images/icon/sawako.jpg',  32.0, height: 28.0,) : Image.asset('images/icon/sawako.jpg',  32.0, height: 28.0,),
    //              backgroundColor:Colors.yellow[200]
              ),
              new BottomNavigationBarItem(
                  title: new Text(
                    'キャラクター',
                    style: TextStyle(
                      color: _currentIndex == 1 ? Color(0xFF46c01b) : Color(0xff999999),
                    ),
                  ),
                  icon: _currentIndex == 1 ? Image.asset('images/icon/flower.png',  32.0, height: 28.0,) : Image.asset('images/icon/flower.png',  32.0, height: 28.0,)
              ),
              new BottomNavigationBarItem(
                  title: new Text(
                    '周辺',
                    style: TextStyle(
                      color: _currentIndex == 2 ? Color(0xFF46c01b) : Color(0xff999999),
                    ),
                  ),
                  icon: _currentIndex == 2 ? Image.asset('images/icon/flower.png',  32.0, height: 28.0,) : Image.asset('images/icon/flower.png',  32.0, height: 28.0,)
              )
            ],
          ),
    
          body: currentPage(),
        );
      }
    }

    lib/story/story.dart

    story.dart

    import 'package:flutter/material.dart';
    
    void main() => runApp(Story());
    
    class Story extends StatefulWidget {
      @override
      _Story  createState() => new _Story();
    }
    
    class _Story extends State<Story> {
      @override
      Widget build(BuildContext context) {
        // TODO: implement build
        return Scaffold(
          body: new Center(
            child: new Text(
              'Story',
              style: TextStyle(color: Colors.amberAccent),
            ),
          ),
        );
      }
    }

    其它两个文件差不多一样,因为只显示了一个单词而已。

  • 相关阅读:
    nginx 命令
    nginx 配置文件(windows)
    nginx 配置文件(linux)
    nginx 安装
    什么是REST架构
    名词解释
    建造者模式
    单例模式
    工厂模式
    赋值运算符,拷贝构造函数,clone()方法总结
  • 原文地址:https://www.cnblogs.com/shuangzikun/p/taotao_flutter_loading_app.html
Copyright © 2020-2023  润新知