Я хотел бы удалить цвет фона кнопки возврата по умолчанию. У меня есть конфигурации ниже, но они все равно выглядят так, как на фотографии. TIA для всех входов.
hightlightColor: Colors.transparent,
splashColor: Colors.transparent,
splashFactory: NoSplash.splashFactory,
Заранее спасибо.
я не хотел использовать какие-либо виджеты, так как хотел переопределить темы во всем приложении. интересно, есть ли какие-нибудь решения для этого
Вот BackButton с прозрачным фоном:
BackButton(
style: ButtonStyle(
backgroundColor: MaterialStatePropertyAll(Colors.transparent),
surfaceTintColor: MaterialStatePropertyAll(Colors.transparent),
)
),
Используйте его как многоразовый виджет, потому что, если вы пытаетесь справиться с Theme
, чтобы изменить эту кнопку «Назад», вам придется изменить всю тему IconButton
. потому что кнопка «Назад» рассматривается как IconButton.
ThemeData(
iconButtonTheme: IconButtonThemeData(
style: ButtonStyle(
backgroundColor: MaterialStatePropertyAll(Colors.transparent,)
// will be applied to all of the IconButtons
)
),
Это потому, что ведущий виджет предназначен не только для кнопки «Назад», он принимает любой виджет.
Поэтому рекомендуется использовать его как многоразовый виджет.
Надеюсь, это вам поможет.
Я нашел способ переопределить тему во всем приложении. Установите следующее в ThemeData и предоставьте его теме в MaterialApp.
iconButtonTheme: IconButtonThemeData(
style: ButtonStyle(
overlayColor: MaterialStateProperty.all(Colors.transparent),
splashFactory: NoSplash.splashFactory,
),
),
Кроме того, чтобы удалить всю всплывающую подсказку в кнопке автоматическиImplyLeading, я столкнулся со следующим:
class BackButtonOverride extends DefaultMaterialLocalizations {
BackButtonOverride(Locale locale) : super();
@override
String get backButtonTooltip => '';
}
class BackButtonDelegate
extends LocalizationsDelegate<MaterialLocalizations> {
const BackButtonDelegate();
@override
Future<BackButtonOverride> load(Locale locale) {
return SynchronousFuture(BackButtonOverride(locale));
}
@override
bool shouldReload(BackButtonDelegate old) => false;
@override
bool isSupported(Locale locale) => true;
}
и применен к MaterialApp следующим образом:
localizationsDelegates: const [
BackButtonDelegate(),
],
Вы использовали кнопку со значком?