📜  Flutter – BorderRadiusDirectional小部件

📅  最后修改于: 2021-05-08 19:46:52             🧑  作者: Mango

BorderRadiusDirectional是flutter一个预建的小部件。其功能类似于BorderRadius小部件,该小部件将在边框的各个角落添加一条曲线。但是有一个区别,在BorderRadiusDirectional小部件中,我们可以根据文本方向指定转角半径。当我们的flutter应用程序的文本方向取决于用户的某种用户输入(例如选择应用程序的语言)时,它会派上用场。在某种程度上,它与 BorderDirectional小部件。

总共有五种方法来实现BorderRadiusDirectional小部件:

1.构造函数BorderRadiusDirectional.all

const BorderRadiusDirectional.all(
Radius radius
)

2. BorderRadiusDirectional.circular的构造方法:

BorderRadiusDirectional.circular(
double radius
)

3. BorderRadius的构造函数。水平

const BorderRadiusDirectional.horizontal(
{Radius start: Radius.zero,
Radius end: Radius.zero}
)

4. BorderRadiusDirectional.only的构造方法:

const BorderRadiusDirectional.only(
{Radius topStart: Radius.zero,
Radius topEnd: Radius.zero,
Radius bottomStart: Radius.zero,
Radius bottomEnd: Radius.zero}
)

5. BorderRadiusDirectional.vertical的构造方法:

const BorderRadiusDirectional.vertical(
{Radius top: Radius.zero,
Radius bottom: Radius.zero}
)

BorderRadiusDirectional的属性

  • bottomEnd: Radius类是此属性所采用的对象,用于根据文本方向指定左下角或右下角的角半径。
  • botttomStart: Radius类是此属性所采用的对象,用于根据文本方向指定左下角或右下角的角半径。
  • topEnd: Radius类是此属性所采用的对象,用于根据文本方向指定左上角或右上角的角半径。对于ltr ,它将是右上角;对于rtl ,它将是右上角。
  • topstart: Radius类是此属性所采用的对象,用于根据文本方向指定左上角或右上角的角半径。

示例:在此示例中,BorderRadiusDirectional.only用于将曲线添加到边框的角。

文字方向为从左到右。

Dart
import 'package:flutter/material.dart';
  
void main() {
  runApp(
    //Our app widget tree starts herwe
    MaterialApp(
      builder: (context, child) {
        return Directionality(
          //Here we can chande the directionality of our app
          textDirection: TextDirection.ltr,
          child: child,
        ); //Directionlity
      },
      home: Scaffold(
        appBar: AppBar(
          title: Text('GeeksforGeeks'),
          backgroundColor: Colors.greenAccent[400],
          leading: IconButton(
            icon: Icon(Icons.menu),
            tooltip: 'Menu',
            onPressed: () {},
          ), //IcoButton
          actions: [
            IconButton(
              icon: Icon(Icons.comment),
              tooltip: 'Comment',
              onPressed: () {},
            ), //IconButton
          ], //[]
        ), //AppBar
        body: Center(
          child: Padding(
            padding: const EdgeInsets.all(12.0),
            child: SizedBox(
              height: 200,
              width: 250,
              child: Container(
                decoration: BoxDecoration(
                    image: const DecorationImage(
                      image: NetworkImage(
                          'https://media.geeksforgeeks.org/wp-content/cdn-uploads/logo.png'),
                      scale: 3.0,
                    ),
                    border: Border.all(
                        color: Colors.green,
                        width: 4.0,
                        style: BorderStyle.solid), //Border.all
  
                    /* The BorderRadiusDirectional widget  is here */
  
                    borderRadius: BorderRadiusDirectional.only(
                      topStart: Radius.circular(5.0),
                      topEnd: Radius.circular(10.0),
                      bottomStart: Radius.circular(15.0),
                      bottomEnd: Radius.circular(20.0),
                    ) //BorderRadiusDirectional.only
                    ), //BoxDecoration
              ), //Conatiner
            ), //SizedBox
          ), //Padding
        ), //Center
      ), //Scaffold
      debugShowCheckedModeBanner: false,
      //Deug banner is turned off
    ), //MaterialApp
  );
}


输出:

说明:此应用程序中的文本方向或方向性指定为ltr,即从左到右(默认情况下相同)。在BoxDecoration小部件中,我们使用了borderRadius参数,该参数将BorderRadiusDirectional.only保留为对象。

BorderRadiusDirectional.only类中,我们使用topStart属性,该属性将Radius.circlular(5.0)保留为对象,这仅意味着它给角的边界半径为5个像素,在这种情况下,它的左上角为(因为文字方向是ltr )。然后,我们具有topEnd属性,该属性将右上角的边框半径设置为10个像素。 bottomStart属性指定到边框的左下角的半径为15像素,而bottomEnd属性指定到边框的右下角的半径为20像素。

文字方向为从右到左。

// Code snippet of Directionality
        ...
          return Directionality(
                 //Here we can chande the directionality of our app
                 textDirection: TextDirection.ltr,
                  child: child,
              ); //Directionlity
             },
        ...
        // Code snippet of the BorderRadiusDirectionality.only
        ...
                    borderRadius: BorderRadiusDirectional.only(
                      topStart: Radius.circular(5.0),
                      topEnd: Radius.circular(10.0),
                      bottomStart: Radius.circular(15.0),
                      bottomEnd: Radius.circular(20.0),
                    ) //BorderRadiusDirectional.only
        ...

输出:

说明:此应用程序中唯一的区别是“方向性”或设置为rtl (从右到左)的文本方向。如果将输出与上述应用程序进行比较,我们可以看到右上角指定了5个像素半径,这意味着它现在是topStart角。 topEnd角是半径为10 px的左上角, bottomStart角是半径为15 px的右下角,而bottomEnd角是半径为20 px的左下角。

因此,这是我们如何使用BorderRadiusDirectional小部件的示例。

想要一个节奏更快,更具竞争性的环境来学习Android的基础知识吗?
单击此处前往由我们的专家精心策划的指南,以使您立即做好行业准备!