下面的代码代表了以下问题的可重现示例。我希望导航栏的背景颜色与脚手架的背景颜色相同。然而,当我将这些颜色设置为橙色(或任何其他颜色)时,即使选择了完全相同的颜色,它们也会略有不同。
import 'package:flutter/material.dart';
void main() {
runApp(const MainApp());
}
class MainApp extends StatelessWidget {
const MainApp({super.key});
@override
Widget build(BuildContext context) {
return const MaterialApp(
home: Scaffold(
body: Center(
child: Text('Hello World!'),
),
bottomNavigationBar: MyNavigationBar(),
backgroundColor: Colors.orange,
),
);
}
}
class MyNavigationBar extends StatefulWidget {
const MyNavigationBar({super.key});
@override
State<MyNavigationBar> createState() => _MyNavigationBarState();
}
class _MyNavigationBarState extends State<MyNavigationBar> {
int currentPageIndex = 0;
@override
Widget build(BuildContext context) {
return NavigationBar(
selectedIndex: currentPageIndex,
onDestinationSelected: (int index) => setState(() => currentPageIndex = index),
destinations: const <Widget>[
NavigationDestination(icon: Icon(Icons.home), label: 'Home'),
NavigationDestination(icon: Icon(Icons.person), label: 'Profile'),
NavigationDestination(icon: Icon(Icons.settings), label: 'Settings')
],
backgroundColor: Colors.orange,
indicatorColor: Colors.white,
);
}
}
我错过了什么?
谢谢!
祝一切顺利
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
void main() {
runApp(const MainApp());
}
class MainApp extends StatelessWidget {
const MainApp({super.key});
@override
Widget build(BuildContext context) {
return const MaterialApp(
debugShowCheckedModeBanner: false,
home: Scaffold(
body: Center(
child: Text('Hello World!'),
),
bottomNavigationBar: MyNavigationBar(),
backgroundColor: Colors.orange,
),
);
}
}
class MyNavigationBar extends StatefulWidget {
const MyNavigationBar({super.key});
@override
State<MyNavigationBar> createState() => _MyNavigationBarState();
}
class _MyNavigationBarState extends State<MyNavigationBar> {
int currentPageIndex = 0;
@override
void initState() {
// TODO: implement initState
super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) {
SystemChrome.setSystemUIOverlayStyle(
const SystemUiOverlayStyle(
systemNavigationBarColor: Colors.orange,
systemNavigationBarIconBrightness: Brightness.dark,
statusBarColor: Colors.orange,
systemNavigationBarDividerColor: Colors.orange,
),
);
});
}
@override
Widget build(BuildContext context) {
return NavigationBar(
selectedIndex: currentPageIndex,
onDestinationSelected: (int index) => setState(() => currentPageIndex = index),
destinations: const <Widget>[
NavigationDestination(icon: Icon(Icons.home), label: 'Home'),
NavigationDestination(icon: Icon(Icons.person), label: 'Profile'),
NavigationDestination(icon: Icon(Icons.settings), label: 'Settings')
],
backgroundColor: Colors.orange,
elevation: 0,
indicatorColor: Colors.white,
);
}
}
是这样吗?