📜  Flutter – BorderRadiusDirectional 小部件

📅  最后修改于: 2021-09-23 06:19:57             🧑  作者: 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
  );
}


输出:

说明:本应用中的文字方向或Directionality指定为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 的基础知识吗?
单击此处前往由我们的专家精心策划的指南,旨在让您立即做好行业准备!