我的Web应用程序(考勤管理系统)包含一个仪表板,登录后会打开.仪表板右侧包含一些数据,左侧包含一个菜单栏,顶部包含一个页眉容器.当用户点击每个菜单项时,相关页面应该在仪表板的右侧打开(如员工页面、部门页面等),但保持左侧菜单和顶部栏不变.我应该如何实现这一点?是通过容器还是借助任何其他方法或小部件?

这将是我的第一个Flutter 网络应用(我已经开发了移动应用).它将是在Ffltter中开发的考勤应用程序的后端应用程序.是否建议在此类项目中使用响应式布局?

推荐答案

如果我正确理解了您的问题,一个可能的解决方案库可能是这样的.

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  String selectedSidebarItem = 'Home';

  void onSidebarItemSelected(String item) {
    setState(() {
      selectedSidebarItem = item;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Fixed Sidebar Example'),
      ),
      body: Row(
        children: [
          // Sidebar
          Container(
            width: 200,
            child: Drawer(
              child: ListView(
                padding: EdgeInsets.zero,
                children: [
                  DrawerHeader(
                    decoration: BoxDecoration(
                      color: Colors.blue,
                    ),
                    child: Text(
                      'Sidebar',
                      style: TextStyle(
                        color: Colors.white,
                        fontSize: 24,
                      ),
                    ),
                  ),
                  ListTile(
                    title: Text('Home'),
                    onTap: () => onSidebarItemSelected('Home'),
                  ),
                  ListTile(
                    title: Text('Settings'),
                    onTap: () => onSidebarItemSelected('Settings'),
                  ),
                ],
              ),
            ),
          ),
          // Content
          Expanded(
            child: Center(
              child: Column(
                mainAxisAlignment: MainAxisAlignment.center,
                children: [
                  Text(
                    'Selected Sidebar Item:',
                  ),
                  Text(
                    selectedSidebarItem,
                    style: TextStyle(
                      fontWeight: FontWeight.bold,
                      fontSize: 20,
                    ),
                  ),
                ],
              ),
            ),
          ),
        ],
      ),
    );
  }
}

Flutter相关问答推荐

Flutter -如何从布局填充(对称水平)中排除小部件?

如何在Flutter 中播放音频

Flutter 蜂窝单元测试

在Flutter 中创建自定义Snackbar类

ReCAPTCHA Enterprise中的严重安全漏洞

一个API中有两个不同JSON响应的Flutter 改装问题

Flutter守护进程无法启动

使用现有Map方法对子类克隆方法的逻辑进行Dart标准化

如何手动将 FirebaseAuth 用户邮箱验证状态设置为 true

在 flutter 的列中使用 Expanded 时出现渲染 Flex 错误

如果其他Provider 的帐户已存在,如何阻止用户登录?

如何解决需要一个标识符,但得到的是:.try 在:之前插入一个标识符.dart 错误

Agora VideoCall 不显示远程视频网格

flutter 创建一个带有 2 个图标的按钮

在 CircleAvatar 中放置芯片

我的主屏幕上的 FutureBuilder 不断重新加载(但仅在其他屏幕上时)?

构建失败 - 无法解析 io.grpc:grpc-core:[1.28.0]. (是的,我已经升级到 mavenCentral())

Flutter :RangeError(索引):无效值:不在包含范围内0..3:4使用IndexedListView.builder

一个或多个插件需要更高的 Android SDK 版本

Navigator.push '!_debugLocked' 上的错误:不正确