Как мне разместить FloatingActionButton на левой стороне внутри Scaffold?
В настоящее время доступны только опции centerFloat, centerDocked, endFloat и endDocked.
Возможно, Материальный дизайн не намерен размещать FAB на startFloat или startDocked.
Было бы хорошо, если бы RTL изменил endFloat и endDocked, чтобы он отображался слева, но это не так.
В апреле 2020 г., доступные параметры были расширены, и startFloat, а также startDocked теперь включены в параметры.
Вот полный список доступных опций (см. FloatingActionButtonLocation документация):
centerDockedcenterFloatcenterTopendDockedendFloatendTopminiCenterDockedminiCenterFloatminiCenterTopminiEndDockedminiEndFloatminiEndTopminiStartDockedminiStartFloatminiStartTopstartDockedstartFloatstartTopВы даже можете легко определить свои собственные местоположения с помощью 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
тогда вам придется написать свою собственную фантастику. Материальный дизайн довольно разборчив. для единообразного пользовательского интерфейса им просто не нужны фабулы на правой стороне.