Flutter: внутри ящика переместите элементы ListTile вниз - PullRequest
0 голосов
/ 19 июня 2020

Внутри 2-го контейнера, где находится текстовая учетная запись и выход из системы, я бы хотел, чтобы он находился внизу ящика. Я добавил выравнивание и выравнивание виджета: bottomCenter, но это не работает. Я также пробовал использовать FractionalOffset, но это тоже не работает.

Какую ошибку я делаю, что контейнер не перемещается в нижнюю часть?

Код

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:mealapp/models/global.dart';
import 'package:mealapp/screens/meal_plan/meal_plan.dart';
import 'package:mealapp/screens/shopping_plan/shopping.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:mealapp/bloc/auth/auth_bloc.dart';
import 'package:mealapp/bloc/auth/auth_event.dart';

class HomeScreen extends StatefulWidget {
  @override
  _HomeScreenState createState() => _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen> {
  final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
  @override
  Widget build(BuildContext context) {
    SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(
      statusBarColor: Colors.white,
      statusBarBrightness: Brightness.light,
      statusBarIconBrightness: Brightness.dark,
    ));
    final authBloc = context.bloc<AuthBloc>();

    return DefaultTabController(
      length: 2,
      child: Scaffold(
        key: _scaffoldKey,
        drawer: Theme(
          data: Theme.of(context).copyWith(canvasColor: darkGreyColor),
          child: Drawer(
            child: ListView(
              padding: EdgeInsets.zero,
              children: <Widget>[
                DrawerHeader(
                  decoration: BoxDecoration(
                    color: Colors.white,
                    borderRadius: BorderRadius.circular(20),
                  ),
                  child: Center(
                    child: Text(
                      'Settings',
                      style: darkTodoTitle,
                    ),
                  ),
                ),
                ListTile(
                  leading:
                      Icon(Icons.create, color: Colors.white, size: 25),
                  onTap: () {},
                  title: Text(
                    'Create New List',
                    style: TextStyle(color: Colors.white, fontSize: 20),
                  ),
                ),
                Container(
                  child: Column(
                    children: <Widget>[
                      Row(
                        children: <Widget>[
                          Expanded(
                            child: Padding(
                              padding: EdgeInsets.symmetric(horizontal: 10.0),
                              child: Container(
                                height: 1.8,
                                color: Colors.white54,
                              ),
                            ),
                          ),
                        ],
                      ),
                      ListTile(
                        leading: Icon(Icons.account_box,
                            color: Colors.white, size: 25),
                        onTap: () {},
                        title: Text(
                          'Here the Lists you got access or created',
                          style: TextStyle(color: Colors.white, fontSize: 20),
                        ),
                      ),
                    ],
                  ),
                ),
                Container(
                 child: Align(alignment: Alignment.bottomCenter,
                  child: Column(
                    children: <Widget>[
                      Row(
                        children: <Widget>[
                          Expanded(
                            child: Padding(
                              padding: EdgeInsets.symmetric(horizontal: 10.0),
                              child: Container(
                                height: 1.8,
                                color: Colors.white54,
                              ),
                            ),
                          ),
                        ],
                      ),
                      ListTile(
                        leading: Icon(Icons.account_box,
                            color: Colors.white, size: 25),
                        onTap: () {},
                        title: Text(
                          'Account',
                          style: TextStyle(color: Colors.white, fontSize: 20),
                        ),
                      ),
                      ListTile(
                        leading:
                            Icon(Icons.person, color: Colors.white, size: 25),
                        onTap: () => authBloc.add(LogoutUser()),
                        title: Text(
                          'Logout',
                          style: TextStyle(color: Colors.white, fontSize: 20),
                        ),
                      ),
                    ],
                  ),
                ),
                ),
              ],
            ),
          ),
        ),
        appBar: AppBar(
          brightness: Brightness.light,
          elevation: 0,
          leading: Builder(
            builder: (context) => IconButton(
                onPressed: () => _scaffoldKey.currentState.openDrawer(),
                icon: Icon(
                  Icons.menu,
                  color: Colors.blue,
                )),
          ),
          title: TabBar(
            tabs: [
              Tab(
                icon: Icon(Icons.fastfood),
              ),
              Tab(
                icon: Icon(Icons.local_grocery_store),
              ),
            ],
            labelColor: darkGreyColor,
            unselectedLabelColor: Colors.blue,
            indicatorSize: TabBarIndicatorSize.label,
            indicatorPadding: EdgeInsets.all(5.0),
            indicatorColor: Colors.transparent,
          ),
          backgroundColor: Colors.white,
        ),
        body: TabBarView(
          children: [
            MealPage(),
            ShoppingPage(),
          ],
        ),
        backgroundColor: Colors.white,
      ),
    );
  }
}

1 Ответ

0 голосов
/ 19 августа 2020

Вам нужно обернуть ListTile Widget внутри Align Widget и предоставить alignment: FractionalOffset.bottomCenter. Этот виджет Align должен быть заключен в виджет Expanded, как вы упомянули в вопросе, который вы пропустили, чтобы обернуть Align внутри Expanded Widget. Попробуйте сделать следующее, это вам поможет.

Expanded(
    child: Align(
         alignment: FractionalOffset.bottomCenter,
         child: ListTile(
             leading: Icon(Icons.account_box,
             color: Colors.white, size: 25),
             onTap: () {},
                 title: Text(
                 'Account',
                  style: TextStyle(
                      color: Colors.white, fontSize: 20
                  ),
              ),
          ),
      ),
),
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...