Разместите FloatingActionButton с левой стороны

Как мне разместить FloatingActionButton на левой стороне внутри Scaffold?
В настоящее время доступны только опции centerFloat, centerDocked, endFloat и endDocked.

Возможно, Материальный дизайн не намерен размещать FAB на startFloat или startDocked.
Было бы хорошо, если бы RTL изменил endFloat и endDocked, чтобы он отображался слева, но это не так.

тогда вам придется написать свою собственную фантастику. Материальный дизайн довольно разборчив. для единообразного пользовательского интерфейса им просто не нужны фабулы на правой стороне.

blaneyneil 24.07.2018 06:48
7
1
4 796
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

В апреле 2020 г., доступные параметры были расширены, и startFloat, а также startDocked теперь включены в параметры.

Вот полный список доступных опций (см. FloatingActionButtonLocation документация):

  • centerDocked
  • centerFloat
  • centerTop
  • endDocked
  • endFloat
  • endTop
  • miniCenterDocked
  • miniCenterFloat
  • miniCenterTop
  • miniEndDocked
  • miniEndFloat
  • miniEndTop
  • miniStartDocked
  • miniStartFloat
  • miniStartTop
  • startDocked
  • startFloat
  • startTop

Вы даже можете легко определить свои собственные местоположения с помощью StandardFabLocation.

Есть и другое решение этой проблемы. Кнопка Fab по умолчанию всегда находится внизу экрана. Итак, если мы обернем наш Scaffold на Directionality и установим направление его текста на TextDirection.rtl, тогда кнопка переместится влево. но поскольку теперь само тело зеркально отражено, мы можем обернуть тело другим Directionality и установить направление его текста на TextDirection.ltr

  @override
  Widget build(BuildContext context) {
    return 
      Directionality(
      textDirection: TextDirection.rtl,
      child:Scaffold(
      appBar: AppBar(
        title: const Text('Something),
      ),
      body: Directionality(
        textDirection: TextDirection.ltr,
        child: Center(child: const Text('Press the button below!'))),
      floatingActionButton: FloatingActionButton(
        onPressed: () {
          
        },
        child: Icon(Icons.navigation),
        backgroundColor: Colors.green,
      ),
    )
      );
  }

С 2020 года вы можете использовать следующее:

floatingActionButtonLocation: FloatingActionButtonLocation.startFloat

Параметр, который можно передать в виджет Scaffold из material.dart

Источник: PR 51465

Другие вопросы по теме