How to remove or manage space in Flutter ListView Builder?

前端 未结 1 1562
南笙
南笙 2021-01-13 08:31

I am new to flutter and this question may be duplicate as well. If someone can assist me finding answer my query please? Your kind kind help will be highly appreciated.

相关标签:
1条回答
  • 2021-01-13 09:18

    you facing this issue due to auto padding in ListTile. you can use Inkwell and Row to achieve same effect. Following Code May help you.

    import 'package:flutter/material.dart';
    
      void main() => runApp(new MyApp());
    
      class MyApp extends StatelessWidget {
        @override
        Widget build(BuildContext context) {
          return new MaterialApp(
            title: 'Flutter Demo',
            theme: new ThemeData(
              primarySwatch: Colors.blue,
            ),
            home: new Scaffold(
              appBar: new AppBar(
                title: new Text("check"),
              ),
              drawer: XmobeMenu(5),
            ),
    
          );
        }
      }
    
      final List<MenuItem> menuItems = <MenuItem>[
        MenuItem(0,'Home',Icons.home,Icons.chevron_right),
        MenuItem(0,'Home',Icons.home,Icons.chevron_right),
        MenuItem(0,'Home',Icons.home,Icons.chevron_right),
        MenuItem(0,'Home',Icons.home,Icons.chevron_right),
        MenuItem(0,'Home',Icons.home,Icons.chevron_right),
        MenuItem(0,'Home',Icons.home,Icons.chevron_right),
        MenuItem(0,'Home',Icons.home,Icons.chevron_right),
      ];
    
      class XmobeMenu extends StatelessWidget {
        int indexNumber;
        XmobeMenu(int menuIndex)
        {
          indexNumber =menuIndex;
        }
        @override
        Widget build(BuildContext context) {
          return Drawer(
            child: ListView.builder(
              itemBuilder: (BuildContext context, int index) {
                return MenuItemWidget(menuItems[index],indexNumber);
              },
              itemCount: menuItems.length,
            ),
          );
        }
      }
    
      class MenuItem {
        MenuItem(this.itemNumber,this.title, this.leadIcon, this.trailIcon,);
        final int itemNumber;
        final IconData leadIcon;
        final IconData trailIcon;
        final String title;
      }
    
      class MenuItemWidget extends StatelessWidget {
        final MenuItem item;
        final int indexNumber;
        const MenuItemWidget(this.item, this.indexNumber);
    
        Widget _buildMenu(MenuItem menuItem, context) {
          return InkWell(
              onTap: () {
                Navigator.of(context).push(
                  new MaterialPageRoute(
                    builder: (BuildContext context) => MyApp(),
                  ),
                );
              },
              child: new Container(
                color: const Color.fromARGB(0, 245,245,245),
                child: new Column(
                  children: <Widget>[
                    new Column( children: <Widget>[
                      Container(
                        padding: new EdgeInsets.all(8.0), // what ever padding you want add here
                        child: Row(
                          children: <Widget>[
                            new Icon(menuItem.leadIcon),
                            new Expanded (
                              child: new Text(menuItem.title),
                            ),
                            new Icon(menuItem.trailIcon),
                          ],
                        )
                      ),
                      Divider(height: 1.0,color: Colors.grey,),
                    ],)
                  ],
                ),
    
              ),
            );
        }
        bool _checkEnabled(int itemNumber, int index)
        {
          if(itemNumber==index) {
            return true;
          }
          else
          {
            return false;
          }
        }
        @override
        Widget build(BuildContext context) {
          return _buildMenu(this.item, context);
        }
    
    
      }
    
    0 讨论(0)
提交回复
热议问题