मैं केवल AppBar
स्पंदन की ऊंचाई कैसे निर्धारित कर सकता हूं ?
बार का शीर्षक लंबवत (उस में AppBar
) केंद्रित होना चाहिए ।
मैं केवल AppBar
स्पंदन की ऊंचाई कैसे निर्धारित कर सकता हूं ?
बार का शीर्षक लंबवत (उस में AppBar
) केंद्रित होना चाहिए ।
जवाबों:
आप PreferredSize का उपयोग कर सकते हैं :
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Example',
home: Scaffold(
appBar: PreferredSize(
preferredSize: Size.fromHeight(50.0), // here the desired height
child: AppBar(
// ...
)
),
body: // ...
)
);
}
}
centerTitle
इसे केंद्र में करने के लिए संपत्ति का उपयोग कर सकते हैं ।
AppBar
आप इसका उपयोग कर सकते हैं PreferredSize
और इसके flexibleSpace
लिए:
appBar: PreferredSize(
preferredSize: Size.fromHeight(100.0),
child: AppBar(
automaticallyImplyLeading: false, // hides leading widget
flexibleSpace: SomeWidget(),
)
),
इस तरह से आप इसकी छाया को दृष्टिगत रखने elevation
के AppBar
लिए रख सकते हैं और कस्टम ऊँचाई रख सकते हैं , जो कि मैं बस ढूंढ रहा था। आपको रिक्ति सेट करना है SomeWidget
, यद्यपि।
इसे लिखते समय, मुझे इसकी जानकारी नहीं थी PreferredSize
। इसे हासिल करने के लिए सिनेन का जवाब बेहतर है।
आप एक कस्टम ऊंचाई के साथ अपना खुद का कस्टम विजेट बना सकते हैं:
import "package:flutter/material.dart";
class Page extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new Column(children : <Widget>[new CustomAppBar("Custom App Bar"), new Container()],);
}
}
class CustomAppBar extends StatelessWidget {
final String title;
final double barHeight = 50.0; // change this for different heights
CustomAppBar(this.title);
@override
Widget build(BuildContext context) {
final double statusbarHeight = MediaQuery
.of(context)
.padding
.top;
return new Container(
padding: new EdgeInsets.only(top: statusbarHeight),
height: statusbarHeight + barHeight,
child: new Center(
child: new Text(
title,
style: new TextStyle(fontSize: 20.0, fontWeight: FontWeight.bold),
),
),
);
}
}
@ Cinn के जवाब के अलावा, आप इस तरह एक वर्ग को परिभाषित कर सकते हैं
class MyAppBar extends AppBar with PreferredSizeWidget {
@override
get preferredSize => Size.fromHeight(50);
MyAppBar({Key key, Widget title}) : super(
key: key,
title: title,
// maybe other AppBar properties
);
}
या इस तरह से
class MyAppBar extends PreferredSize {
MyAppBar({Key key, Widget title}) : super(
key: key,
preferredSize: Size.fromHeight(50),
child: AppBar(
title: title,
// maybe other AppBar properties
),
);
}
और फिर मानक एक के बजाय इसका उपयोग करें
Cinn का जवाब बहुत अच्छा है, लेकिन इसमें एक बात गलत है।
PreferredSize
विजेट, स्थिति पट्टी के लिए लेखांकन के बिना, स्क्रीन के शीर्ष पर तुरंत शुरू कर देंगे तो उसकी ऊंचाई से कुछ स्थिति पट्टी की ऊंचाई द्वारा आच्छादित कर दिया जाएगा। यह भी पक्ष notches के लिए खाता है।
समाधान : preferredSize
एक के साथ बच्चे को लपेटोSafeArea
appBar: PreferredSize(
//Here is the preferred height.
preferredSize: Size.fromHeight(50.0),
child: SafeArea(
child: AppBar(
flexibleSpace: ...
),
),
),
यदि आप लचीले स्थान की संपत्ति का उपयोग नहीं करना चाहते हैं, तो उस सब की कोई आवश्यकता नहीं है, क्योंकि AppBar
वसीयत के अन्य गुण स्टेटस बार के लिए स्वचालित रूप से खाते हैं।
SafeArea
स्टेटस बार की ऊंचाई को कम करना है, फिर भी आपने इसे फिर से जोड़ा है MediaQuery.of(context).padding.top
? मुझे लगता है कि यहां SafeArea की जरूरत नहीं है।
SafeArea
महत्वपूर्ण है ताकि ऐप बार स्टेटस बार के साथ ओवरलैप न हो, लेकिन MediaQuery.of(context).padding.top
वास्तव में इसकी आवश्यकता नहीं है। मैंने उत्तर संपादित किया है, धन्यवाद।
आप टूलबार की टूलबार संपत्ति का उपयोग कर सकते हैं, यह वही करता है जो आप चाहते हैं।
यदि आप विज़ुअल कोड में हैं, तो Ctrl + AppBar फ़ंक्शन पर क्लिक करें ।
Widget demoPage() {
AppBar appBar = AppBar(
title: Text('Demo'),
);
return Scaffold(
appBar: appBar,
body: /*
page body
*/,
);
}
और इस टुकड़े को संपादित करें।
app_bar.dart will open and you can find
preferredSize = new Size.fromHeight(kToolbarHeight + (bottom?.preferredSize?.height ?? 0.0)),
ऊँचाई का अंतर!
AppBar
'सेटिंग' की ऊँचाई के बारे में है , न कि इसे 'सेट' करने के लिए।