appBar의 자동 뒤로 버튼을 다른 색상으로 변경하는 방법을 알 수 없습니다. 그것은 비계 아래에 있고 그것을 조사하려고 노력했지만 머리를 감쌀 수는 없습니다.
return Scaffold(
appBar: AppBar(
backgroundColor: Colors.white,
title: Image.asset(
'images/.jpg',
fit: BoxFit.fill,
),
centerTitle: true,
),
답변
다음 iconTheme
과 같이 AppBar 의 속성 을 사용해야합니다 .
appBar: AppBar(
iconTheme: IconThemeData(
color: Colors.black, //change your color here
),
title: Text("Sample"),
centerTitle: true,
),
또는 뒤로 버튼을 직접 처리하려는 경우.
appBar: AppBar(
leading: IconButton(
icon: Icon(Icons.arrow_back, color: Colors.black),
onPressed: () => Navigator.of(context).pop(),
),
title: Text("Sample"),
centerTitle: true,
),
뒤로 버튼의 색상을 변경하려는 경우에만 더 좋습니다.
appBar: AppBar(
leading: BackButton(
color: Colors.black
),
title: Text("Sample"),
centerTitle: true,
),
답변
‘리딩’을 통해 선택한 위젯으로 기본 뒤로 화살표를 재정의 할 수도 있습니다.
leading: new IconButton(
icon: new Icon(Icons.arrow_back, color: Colors.orange),
onPressed: () => Navigator.of(context).pop(),
),
AppBar 위젯은 설정되지 않은 경우 기본 ‘리딩’위젯을 제공합니다.
답변
새 버튼을 만들고 색상을 추가하는 것이 더 쉬운 것 같았습니다. 궁금한 사람을 위해 내가 어떻게했는지 여기에서
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
leading: BackButton(
color: Colors.black
),
답변
앱에 대해 전체적으로 선행 아이콘 색상을 설정할 수도 있습니다.
MaterialApp(
theme: ThemeData(
appBarTheme: AppBarTheme(
iconTheme: IconThemeData(
color: Colors.green
)
)
)
)
답변
AppBar(
automaticallyImplyLeading: false,
leading: Navigator.canPop(context)
? IconButton(
icon: Icon(
Icons.arrow_back,
color: Colors.black,
size: 47,
),
onPressed: () => Navigator.of(context).pop(),
)
: null,
);
답변
당신은 사용자 정의 할 수 있습니다 AppBarWidget을 키워드, 함께 중요하거나 사용자 정의 할당 할 수 AppBarWidget을 에 appBar의 재산 비계 :
import 'package:flutter/material.dart';
double _getAppBarTitleWidth(
double screenWidth, double leadingWidth, double tailWidth) {
return (screenWidth - leadingWidth - tailWidth);
}
class AppBarWidget extends StatelessWidget with PreferredSizeWidget {
AppBarWidget(
{Key key,
@required this.leadingChildren,
@required this.tailChildren,
@required this.title,
this.leadingWidth: 110,
this.tailWidth: 30})
: super(key: key);
final List<Widget> leadingChildren;
final List<Widget> tailChildren;
final String title;
final double leadingWidth;
final double tailWidth;
@override
Widget build(BuildContext context) {
// Get screen size
double _screenWidth = MediaQuery.of(context).size.width;
// Get title size
double _titleWidth =
_getAppBarTitleWidth(_screenWidth, leadingWidth, tailWidth);
double _offsetToRight = leadingWidth - tailWidth;
return AppBar(
title: Row(
children: [
Container(
width: leadingWidth,
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
children: leadingChildren,
),
),
Container(
color: Colors.green,
width: _titleWidth,
padding: const EdgeInsets.only(left: 5.0, right: 5),
child: Container(
padding: EdgeInsets.only(right: _offsetToRight),
color: Colors.deepPurpleAccent,
child: Center(
child: Text('$title'),
),
),
),
Container(
color: Colors.amber,
width: tailWidth,
child: Row(
children: tailChildren,
),
)
],
),
titleSpacing: 0.0,
);
}
@override
Size get preferredSize => Size.fromHeight(kToolbarHeight);
}
다음은 사용 방법에 대한 예입니다.
import 'package:flutter/material.dart';
import 'package:seal_note/ui/Detail/DetailWidget.dart';
import 'package:seal_note/ui/ItemListWidget.dart';
import 'Common/AppBarWidget.dart';
import 'Detail/DetailPage.dart';
class MasterDetailPage extends StatefulWidget {
@override
State<StatefulWidget> createState() => _MasterDetailPageState();
}
class _MasterDetailPageState extends State<MasterDetailPage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBarWidget(leadingChildren: [
IconButton(
icon: Icon(
Icons.arrow_back_ios,
color: Colors.white,
),
),
Text(
'文件夹',
style: TextStyle(fontSize: 14.0),
),
], tailChildren: [
Icon(Icons.book),
Icon(Icons.hd),
], title: '英语知识',leadingWidth: 140,tailWidth: 50,),
body: Text('I am body'),
);
}
}
답변
appBar: AppBar(
iconTheme: IconThemeData(
color: Colors.white, //modify arrow color from here..
),
);