如何在Flutter中限制特定页面中的粗体文本和文本大小
How to restrict bold text and text size in specific page in Flutter
我遵循此堆栈溢出 来限制整个应用程序的粗体文本 globally
。现在,当我尝试实现此功能以限制 bold
文本以及限制特定屏幕上的大文本 size
时,只有一个限制有效。意味着如果我先限制 bold
文本然后限制大文本 size
然后限制 bold
文本不起作用,如果我先限制大文本 size
并限制 bold
text second then restrict bold
text works 如何解决这个问题?以下是到目前为止我尝试过的示例飞镖代码。
main.dart
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: const HomePage(),
);
}
}
class HomePage extends StatefulWidget {
const HomePage({Key? key}) : super(key: key);
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text(''),
),
body: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
const Center(child: Text('Text')),
const SizedBox(
height: 50.0,
),
Center(
child: TextButton(
onPressed: () {
Navigator.of(context).push(MaterialPageRoute(
builder: (context) => const NextPage()));
},
child: const Text('Move')),
)
],
),
);
}
}
class NextPage extends StatefulWidget {
const NextPage({Key? key}) : super(key: key);
@override
_NextPageState createState() => _NextPageState();
}
class _NextPageState extends State<NextPage> {
@override
Widget build(BuildContext context) {
return MediaQuery(
data: MediaQueryData.fromWindow(WidgetsBinding.instance!.window)
.copyWith(boldText: false), // Restrict bold text
child: MediaQuery(
data: MediaQuery.of(context).copyWith(textScaleFactor: 1.5), // Restrict bigger text size
child: Scaffold(
appBar: AppBar(
title: const Text(''),
),
body: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: const [
Center(child: Text('Text')),
],
),
),
),
);
}
}
您有两种选择来实现您的目标。
1 - 只使用一个 MediaQuery
并将所有设置放在其中:.copyWith(boldText: false, textScaleFactor: 1.5)
2 - 将你内心的 MediaQuery
包裹在 Builder
.
中
我遵循此堆栈溢出 globally
。现在,当我尝试实现此功能以限制 bold
文本以及限制特定屏幕上的大文本 size
时,只有一个限制有效。意味着如果我先限制 bold
文本然后限制大文本 size
然后限制 bold
文本不起作用,如果我先限制大文本 size
并限制 bold
text second then restrict bold
text works 如何解决这个问题?以下是到目前为止我尝试过的示例飞镖代码。
main.dart
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: const HomePage(),
);
}
}
class HomePage extends StatefulWidget {
const HomePage({Key? key}) : super(key: key);
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text(''),
),
body: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
const Center(child: Text('Text')),
const SizedBox(
height: 50.0,
),
Center(
child: TextButton(
onPressed: () {
Navigator.of(context).push(MaterialPageRoute(
builder: (context) => const NextPage()));
},
child: const Text('Move')),
)
],
),
);
}
}
class NextPage extends StatefulWidget {
const NextPage({Key? key}) : super(key: key);
@override
_NextPageState createState() => _NextPageState();
}
class _NextPageState extends State<NextPage> {
@override
Widget build(BuildContext context) {
return MediaQuery(
data: MediaQueryData.fromWindow(WidgetsBinding.instance!.window)
.copyWith(boldText: false), // Restrict bold text
child: MediaQuery(
data: MediaQuery.of(context).copyWith(textScaleFactor: 1.5), // Restrict bigger text size
child: Scaffold(
appBar: AppBar(
title: const Text(''),
),
body: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: const [
Center(child: Text('Text')),
],
),
),
),
);
}
}
您有两种选择来实现您的目标。
1 - 只使用一个 MediaQuery
并将所有设置放在其中:.copyWith(boldText: false, textScaleFactor: 1.5)
2 - 将你内心的 MediaQuery
包裹在 Builder
.