当前位置:网站首页>[shutter] shutter layout component (physicalmodel component)
[shutter] shutter layout component (physicalmodel component)
2022-07-02 21:33:00 【Programmer community】
List of articles
- One 、PhysicalModel Components
- Two 、 Complete code example
- 3、 ... and 、 Related resources
One 、PhysicalModel Components
PhysicalModel Components : The layout can be displayed in different shapes ,
class PhysicalModel extends SingleChildRenderObjectWidget {
const PhysicalModel({
Key key, this.shape = BoxShape.rectangle, // shape : circular , rectangular this.clipBehavior = Clip.none, // Tailoring behavior this.borderRadius, // radius this.elevation = 0.0, @required this.color, // Color value this.shadowColor = const Color(0xFF000000), // The background color Widget child, // Reduced components }) : assert(shape != null), assert(elevation != null && elevation >= 0.0), assert(color != null), assert(shadowColor != null), assert(clipBehavior != null), super(key: key, child: child);}
PhysicalModel Component usage :
- Set crop shape : Default rectangle , Can be in shape Field set circle ;
- Set the background color : color Field to set the background color , Color type ;
- Set the fillet radius : borderRadius Field settings , BorderRadius type ;
- Set crop behavior : clipBehavior Field set crop behavior , Clip Enumeration type , nothing / serrate / Anti-Aliasing / Anti-Aliasing + Save layers ;
- Set the trimmed components : child Field settings are pruned components , Widget type ;
PhysicalModel( color: The background color ( Color type ), // Set the fillet radius 15 borderRadius: radius ( BorderRadius type ), // Set crop behavior , Anti-Aliasing clipBehavior: Clip Enumeration type ( nothing / serrate / Anti-Aliasing / Anti-Aliasing + Save layers ), // Set the trimmed components child: Trimmed components ( Widget type ),)
Code example : PhysicalModel Component clipping PageView Components , take PageView Cut the component into rounded rectangle style ;
PhysicalModel( color: Colors.transparent, // Set the fillet radius 15 borderRadius: BorderRadius.circular(50), // Set crop behavior , Anti-Aliasing clipBehavior: Clip.antiAlias, // Set up PageView Components child: PageView( // Set up PageView Several components encapsulated in children: <Widget>[ // The first page component Container( // Set the center mode , centered alignment:Alignment.center, // Decorator settings , Green background decoration: BoxDecoration(color: Colors.green), // Main text displayed child: Text(" page 0", style: TextStyle(fontSize: 20, color: Colors.black),), ), // The second page component Container( // Set the center mode , centered alignment:Alignment.center, // Decorator settings , Green background decoration: BoxDecoration(color: Colors.red), // Main text displayed child: Text(" page 1", style: TextStyle(fontSize: 20, color: Colors.white),), ), // The third page component Container( // Set the center mode , centered alignment:Alignment.center, // Decorator settings , Green background decoration: BoxDecoration(color: Colors.black), // Main text displayed child: Text(" page 2", style: TextStyle(fontSize: 20, color: Colors.yellow),), ), ], ),),
Two 、 Complete code example
Complete code example :
import 'package:flutter/material.dart';class LayoutPage extends StatefulWidget {
@override _LayoutPageState createState() => _LayoutPageState();}class _LayoutPageState extends State<LayoutPage> {
/// The currently selected bottom navigation bar index int _currentSelectedIndex = 0; // This widget is the root of your application. @override Widget build(BuildContext context) {
// Text component style , Can be set to Text Text component // Set font size 20, The color is red TextStyle textStyle = TextStyle(fontSize: 20, color: Colors.red); return MaterialApp( title: ' Example layout components ', theme: ThemeData( primarySwatch: Colors.blue, ), home: Scaffold( // Top title bar appBar: AppBar(title: Text(' Example layout components '),), // Bottom navigation bar BottomNavigationBar Set up // items You can set multiple BottomNavigationBarItem bottomNavigationBar: BottomNavigationBar( // Set the currently selected bottom navigation index currentIndex: _currentSelectedIndex, // Set the callback event of clicking the navigation bar at the bottom , index The parameter is the index value of the click onTap: (index){
// Callback StatefulWidget Component's setState Method of setting state , Modify the currently selected index // after BottomNavigationBar The component will automatically update the currently selected tab setState(() {
// change int _currentSelectedIndex The state of the variable _currentSelectedIndex = index; }); }, // entry items: [ // Set the bottom navigation bar entry , Each entry can be set with an icon BottomNavigationBarItem( // The default icon icon: Icon(Icons.home, color: Colors.grey,), // Icon in active state activeIcon: Icon(Icons.home, color: Colors.red,), // Set title title: Text(" Home page ") ), // Set the bottom navigation bar entry , Each entry can be set with an icon BottomNavigationBarItem( // The default icon icon: Icon(Icons.settings, color: Colors.grey,), // Icon in active state activeIcon: Icon(Icons.settings, color: Colors.red,), // Set title title: Text(" Set up ") ) ],), // Set the levitation button floatingActionButton: FloatingActionButton( onPressed: (){
print(" Click the hover button "); }, child: Text(" Levitation button assembly "), ), // Container Container usage body: _currentSelectedIndex == 0 ? // Refresh indicator component RefreshIndicator( // Display content child: ListView( children: <Widget>[ Container( // Corresponding to the bottom navigation bar settings tab // Set the decorator of the container , BoxDecoration Is the most commonly used decorator // You can check it by yourself BoxDecoration Properties that can be set in decoration: BoxDecoration(color: Colors.white), // Set up child How the sub components are centered , Center alignment: Alignment.center, // Child components , The subcomponent is set to a Column Components child: Column( // Column Child components , Set up here Text Text component children: <Widget>[ Text(" Main page tab , The drop-down refresh "), // A linear layout arranged horizontally Row( children: <Widget>[ // Original picture , For comparison Image.network("https://img-blog.csdnimg.cn/20210301145757946.png", width: 100, height: 100, ), // Circular clipping component , take child Cut the layout into a circle ClipOval( // Use SizedBox Component constrains layout size child: SizedBox( width: 100, height: 100, // Use SizedBox Constrain this Image Component size child: Image.network("https://img-blog.csdnimg.cn/20210301145757946.png"), ), ), Padding( // Set the inside margin 5 padding: EdgeInsets.all(15), // Square cutting component , Cut the components into squares child: ClipRRect( // Set the clipping fillet , Set the radius of the four corners to 10 Fillet of borderRadius: BorderRadius.all(Radius.circular(10)), // Modify the transparency component , Set up here 50% transparency child: Opacity( opacity: 0.5, // Set up 100x100 Size picture component child: Image.network("https://img-blog.csdnimg.cn/20210301145757946.png", width: 100, height: 100, ), ), ), ), ], ), // Set up a layout container , For encapsulation PageView Components Container( // Set height height: 200, // Set margins margin: EdgeInsets.all(15), // Set decoration , Dark orange background decoration: BoxDecoration( color: Colors.white ), // Set up subcomponents PageView Cutting components for child: PhysicalModel(color: Colors.transparent, // Set the fillet radius 15 borderRadius: BorderRadius.circular(50), // Set crop behavior , Anti-Aliasing clipBehavior: Clip.antiAlias, // Set up PageView Components child: PageView( // Set up PageView Several components encapsulated in children: <Widget>[ // The first page component Container( // Set the center mode , centered alignment:Alignment.center, // Decorator settings , Green background decoration: BoxDecoration(color: Colors.green), // Main text displayed child: Text(" page 0", style: TextStyle(fontSize: 20, color: Colors.black),), ), // The second page component Container( // Set the center mode , centered alignment:Alignment.center, // Decorator settings , Green background decoration: BoxDecoration(color: Colors.red), // Main text displayed child: Text(" page 1", style: TextStyle(fontSize: 20, color: Colors.white),), ), // The third page component Container( // Set the center mode , centered alignment:Alignment.center, // Decorator settings , Green background decoration: BoxDecoration(color: Colors.black), // Main text displayed child: Text(" page 2", style: TextStyle(fontSize: 20, color: Colors.yellow),), ), ], ), ), ), ], ), ), ], ), // Method of callback during refresh // When a drop-down operation occurs in the list , Call back the method // The callback is Future Type of onRefresh: _refreshIndicatorOnRefresh, ) : Container( // Corresponding to the bottom navigation bar settings tab // Set the decorator of the container , BoxDecoration Is the most commonly used decorator // You can check it by yourself BoxDecoration Properties that can be set in decoration: BoxDecoration(color: Colors.white), // Set up child How the sub components are centered , Center alignment: Alignment.center, // Child components , The subcomponent is set to a Column Components child: Column( // Column Child components , Set up here Text Text component children: <Widget>[ Text(" Set up page tabs ") ], ), ) , // This setting is related to _currentSelectedIndex == 0? Corresponding , ?: Ternary operator ), ); } /// RefreshIndicator When a pull-down operation occurs , Call back the method /// This is an asynchronous method , Add... Before the method body async keyword Future<Null> _refreshIndicatorOnRefresh() async{
// Pause 500 ms , Use await Keyword implementation // Here 500 ms Between , The list is in refresh state // 500 ms after , The list becomes non refreshed await Future.delayed(Duration(milliseconds: 500)); return null; }}
Operation effect display :
3、 ... and 、 Related resources
Reference material :
- Flutter Official website : https://flutter.dev/
- Flutter Developing documents : https://flutter.cn/docs ( Strongly recommend )
- official GitHub Address : https://github.com/flutter
- Flutter The Chinese community : https://flutter.cn/
- Flutter Practical tutorial : https://flutter.cn/docs/cookbook
- Flutter CodeLab : https://codelabs.flutter-io.cn/
- Dart Chinese document : https://dart.cn/
- Dart Developer website : https://api.dart.dev/
- Flutter Chinese net ( unofficial , The translation is very good ) : https://flutterchina.club/ , http://flutter.axuer.com/docs/
- Flutter Related issues : https://flutterchina.club/faq/ ( It is recommended to watch it at the introductory stage )
Blog source download :
GitHub Address : https://github.com/han1202012/flutter_cmd ( Keep updating with the progress of the blog , There may not be the source code of this blog )
Blog source snapshot : https://download.csdn.net/download/han1202012/15484718 ( The source code snapshot of this blog , You can find the source code of this blog )
边栏推荐
- AMD's largest transaction ever, the successful acquisition of Xilinx with us $35billion
- Happy Lantern Festival! Tengyuanhu made you a bowl of hot dumplings!
- China plastic box market trend report, technological innovation and market forecast
- Share the easy-to-use fastadmin open source system - Installation
- This team with billions of data access and open source dreams is waiting for you to join
- I drew a Gu ailing with characters!
- Research Report on market supply and demand and strategy of China's Plastic Geogrid industry
- Research Report on market supply and demand and strategy of Chinese garden equipment industry
- Common authority query instructions in Oracle
- Accounting regulations and professional ethics [18]
猜你喜欢
JDBC | Chapter 4: transaction commit and rollback
Customized Huawei hg8546m restores Huawei's original interface
[shutter] statefulwidget component (image component | textfield component)
[CV] Wu Enda machine learning course notes | Chapter 12
treevalue——Master Nested Data Like Tensor
Research Report on ranking analysis and investment strategic planning of RFID market competitiveness of China's industrial manufacturing 2022-2028 Edition
[question brushing diary] classic questions of dynamic planning
[shutter] shutter layout component (Introduction to layout component | row component | column component | sizedbox component | clipoval component)
kernel tty_ struct
Common routines of compressed packets in CTF
随机推荐
~90z axis translation
Number of DP schemes
Research Report on the overall scale, major manufacturers, major regions, products and applications of sliding door dampers in the global market in 2022
Send blessings on Lantern Festival | limited edition red envelope cover of audio and video is released!
Research Report on the overall scale, major manufacturers, major regions, products and application segmentation of power management units in the global market in 2022
Market trend report, technical innovation and market forecast of China's Micro pliers
Plastic floating dock Industry Research Report - market status analysis and development prospect forecast
1007 maximum subsequence sum (25 points) "PTA class a exercise"
rwctf2022_ QLaaS
Construction and maintenance of business website [1]
Import a large amount of data to redis in shell mode
Common authority query instructions in Oracle
[hands on deep learning]02 softmax regression
One week dynamics of dragon lizard community | 2.07-2.13
Go cache of go cache series
Customized Huawei hg8546m restores Huawei's original interface
2021 software security report: open source code, happiness and disaster depend on each other?
The web version of xshell supports FTP connection and SFTP connection
Research Report on market supply and demand and strategy of Chinese garden equipment industry
1005 spell it right (20 points) "PTA class a exercise"