2

如何使用GetX在 Flutter中的图像(侧边栏和导航菜单)中实现设计?类似于网络上的标签。带有 GetX 的 Flutter 侧边栏

4

2 回答 2

0

很简单,只要让你的右边的内容使用GetMaterialApp,并且路由改变是渲染右边的内容,然后left sidler是一个组件warp你的menuslider,最后控制你左边的slider menuchange index。显示我的代码

 Widget build(BuildContext context) {
    return ScreenUtilInit(
        designSize: const Size(dessignWidth, dessignHeight),
        builder: () => BarcodeKeyboardListener(
            onBarcodeScanned: (String codeValue) {},
            child: Material(
              child: MaterialApp(
                  localizationsDelegates: const [
                    GlobalMaterialLocalizations.delegate,
                    GlobalWidgetsLocalizations.delegate,
                  ],
                  supportedLocales: const [
                    Locale('zh', 'CH'),
                    Locale('en', 'US'),
                  ],
                  home: Row(
                    children: [
                      Material(
                        child: SliderMenu(),
                      ),
                      Expanded(
                          child: GetMaterialApp(
                              debugShowCheckedModeBanner: false,
                              enableLog: true,
                              navigatorKey: Get.key,
                              routingCallback: RouteChangeMiddleWare.observer,
                              logWriterCallback: Logger.write,
                              initialRoute: AppPages.INITIAL,
                              getPages: AppPages.routes,
                              unknownRoute: AppPages.unknownRoute,
                              builder: EasyLoading.init(),
                              onInit: () =>
                                  {logger.v('Global.CONFIG', AppConfig)}))
                    ],
                  )),
            )));
  }```
hope to help you;


于 2021-10-24T09:48:30.340 回答
0

这是一个例子,也许它可以帮助你:

import 'package:flutter/material.dart';
import '../../routes/app_pages.dart';
import 'package:get/get.dart';

class SideBar extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Drawer(
      child: Column(
        children: <Widget>[
          DrawerHeader(
            child: Column(
              mainAxisAlignment: MainAxisAlignment.spaceEvenly,
              children: [
                Center(
                  child: Icon(
                    Icons.person,
                    color: Colors.white,
                    size: 50.0,
                  ),
                ),
                Center(
                  child: Text(
                    "Vakup",
                    textAlign: TextAlign.center,
                    style: TextStyle(color: Colors.white, fontSize: 25),
                  ),
                ),
              ],
            ),
            decoration: BoxDecoration(
              color: Colors.blueAccent,
            ),
          ),
          ListTile(
            leading: Icon(Icons.read_more),
            title: Text('Leer datos'),
            onTap: () {
              if (Get.currentRoute == Routes.HOME) {
                Get.back();
              } else {
                Get.toNamed(Routes.HOME);
              }
            },
          ),
          ListTile(
            leading: Icon(Icons.pets),
            title: Text('Registrar animal'),
            onTap: () {
              if (Get.currentRoute == Routes.NEWANIMAL) {
                Get.back();
              } else {
                Get.toNamed(Routes.NEWANIMAL);
              }
            },
          ),
          ListTile(
            leading: Icon(Icons.list_alt),
            title: Text('Lista movimientos'),
            onTap: () {
              if (Get.currentRoute == Routes.MOVEMENTS) {
                Get.back();
              } else {
                //Get.to
                Get.toNamed(Routes.MOVEMENTS);
              }
            },
          ),
          ListTile(
            leading: Icon(Icons.list),
            title: Text('Lista animales'),
            onTap: () {
              if (Get.currentRoute == Routes.LISTOFANIMALS) {
                Get.back();
              } else {
                Get.toNamed(Routes.LISTOFANIMALS);
              }
            },
          ),
          ListTile(
            leading: Icon(Icons.edit),
            title: Text('Grabar datos'),
            onTap: () {
              if (Get.currentRoute == Routes.GRABADO) {
                Get.back();
              } else {
                Get.toNamed(Routes.GRABADO);
              }
            },
          ),
          ListTile(
            leading: Icon(Icons.bluetooth),
            title: Text('Conexion BT'),
            onTap: () {
              if (Get.currentRoute == Routes.CONEXIONBT) {
                Get.back();
              } else {
                Get.toNamed(Routes.CONEXIONBT);
              }
            },
          ),
          ListTile(
            leading: Icon(Icons.picture_as_pdf),
            title: Text('Exportar Datos'),
            onTap: () {
              if (Get.currentRoute == Routes.EXPORT) {
                Get.back();
              } else {
                Get.toNamed(Routes.EXPORT);
              }
            },
          ),
          ListTile(
            leading: Icon(Icons.recent_actors_rounded),
            title: Text('Acerca de'),
            onTap: () {
              if (Get.currentRoute == Routes.ACERCA) {
                Get.back();
              } else {
                Get.toNamed(Routes.ACERCA);
              }
            },
          ),
        ],
      ),
    );
  }
}

家庭部分是:

import 'package:vakuprfid/app/modules/widgets/side_bar.dart';//import widget

class HomeView extends GetView<HomeController> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        drawer: SideBar(),
        body: ...
      );
   }
}

这是结果:

于 2021-04-08T02:42:21.387 回答