Где и как ты отоьражаешь виджет?
перед показом диалога узнай размер шрифта double textScaleFactor = MediaQuery.of(context).textScaleFactor; String fontSize; if (textScaleFactor >= 0.9 && textScaleFactor <= 1.1) { fontSize = "Small"; } else if (textScaleFactor >= 1.0 && textScaleFactor <= 1.2){ fontSize = "Normal"; } else { fontSize = "Large"; } print(fontSize); // Prints Small, Normal or Large затем передай в диалог нужный размер шрифта await _googleSignIn.signIn(context: context, theme: ThemeData( textScaleFactor: 0.9, ))
Красава юзаешь if вместо тернарок
Тернар в тернар предлагаешь запихать?
в идеале бы еще сделать chooseFontSize(double scaleFactor) и внутрь спрятать этот иф, чтобы можно было без элсов обойтись и в разных компонентах юзать
Ну да некоторые так делают
Прям как в ванила реакте принято было! this.props.show ? this.props.div ? <div></div> : <span></span> : null
Херня это. Вообще нечитаемо если несколько уровней условий тернарно записывать
+ но ифы с элсами тоже иногда нечитаемы так.но я все равно склонен к такому подходу. Очевиднее
можно было чутка улучшить const showDiv = this.props.show && this.props.div const showSpan = this.props.show && this.props.div return ( <React.Fragment> { showDiv && <div />} { showSpan && <span />} <React.Fragment> )
ифы с элсами особо плохи, когда внутри ифа больше экрана кода и хер поймешь в середине, ты внутри ифа или нет
Для этого и лучше многозадачность в свичи кидать
или так, или если со свичом не получается, я стараюсь выносить в отдельную функцию и каждый кейс через guard clause проводить
Хз, свитч в очень редких случаях подходит как и вложенные тернарники. Как по мне самый читабельный вариант это if -> return . Без еlse и тд
Там нет возможность передать theme =(
Обсуждают сегодня