Flutter:如何在应用栏中更改文本位置

4
我该如何将文本“Sito Web”在应用栏右侧的位置上进行更改?我尝试使用以下内容:
alignment: Alignment.TopRight

但是他把右上角的文本移动到了应用栏下方。这里是我所指的屏幕截图https://ibb.co/X28TzNN将"Sito Web"的位置改为红圆圈的位置。这是代码,我也尝试过这种方法,但无法在应用栏中移动。这是带有appbar背景图像的文件:background_image_task-9.dart。

import 'package:flutter/material.dart';

class BackgroundImage extends StatelessWidget{
  final Widget body;
  BackgroundImage({this.body});
    @override
    Widget build(BuildContext context){
      return Scaffold(
        appBar: AppBar(
          elevation: 0,
          title: Text('Blumax', style: TextStyle(
            fontWeight: FontWeight.w500,
            fontFamily: 'DancingScript',
            fontSize: 40
          ),),
          centerTitle: false,
        ),
        body: Stack(
          children: <Widget>[Container(
          decoration: BoxDecoration(
            image: DecorationImage(image: AssetImage("assets/blumax.jpg"), fit: BoxFit.cover),
          ),
        ),
          body
         ]
       )
    );
  }
}

这里是包含容器超链接的文件 hyperlink.dart

import 'package:flutter/material.dart';
import 'package:url_launcher/url_launcher.dart';

class Hyperlink extends StatelessWidget {
  final String _url;
  final String _text;

  Hyperlink(this._url, this._text);

  _launchURL() async {
    if (await canLaunch(_url)) {
      await launch(_url);
    } else {
      throw 'Could not launch $_url';
    }
  }

  @override
  Widget build(BuildContext context) {
    return InkWell(
      child: Container(
        alignment: Alignment(0.9, -1.0),
      child: Text(
        _text,
        textAlign: TextAlign.right,
        style: TextStyle(
          fontFamily: 'RobotoMono',
          fontSize: 20,
          color: Colors.white,
          decoration: TextDecoration.underline),
      )),
      onTap: _launchURL,
    );
  }
}

main.dart

import 'package:flutter/material.dart';
import 'background_image_task-9.dart';
import 'hyperlink.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Blumax',
      debugShowCheckedModeBanner: false,
      theme: ThemeData(
        primarySwatch: myColour
      ),
      home: BackgroundImage(
        body: Center(
          child: Hyperlink('www.test.it', 'Sito Web',),
        ),
      )
    );
  }
}

你只是想要在应用栏中将文本“Blumax”右对齐吗?你能展示一下你想要实现的效果吗? - Darshan
@Darshan,我修复了问题,并添加了main.dart。顺便说一下,我想要改变“Sito Web”文本在红色圆圈位置的位置。https://ibb.co/X28TzNN - andrea pirola
1个回答

6

您可以使用Row小部件,并使用mainAxisAlignment: MainAxisAlignment.spaceBetweenBluMaxSito Web元素分别渲染在appbar的左侧和右侧。由于您想要在点击sito web后打开一个URL,因此您可以将该元素包装在GestureDetector中,然后调用打开所需URL的launchURL方法。以下是一个可工作的示例代码:

appBar: AppBar(
          title: Row(
            mainAxisAlignment: MainAxisAlignment.spaceBetween,
            children: <Widget>[
              Text('Blumax'),
              GestureDetector(
                  child: Text('Sito Web'),
                  onTap: _openURL
              )

            ],
          ),
          centerTitle: false,
          actions: <Widget>[
            PopupMenuButton<int>(
              itemBuilder: (context) =>
              [
                PopupMenuItem(
                  value: 1,
                  child: Text("First"),
                ),
                PopupMenuItem(
                  value: 2,
                  child: Text("Second"),
                ),
              ],
            )
          ],
        ),

屏幕上呈现的内容如下:

在此输入图片描述 ...

void _openURL() async {
      const url = 'https://flutter.dev';
      if (await canLaunch(url)) {
        await launch(url);
      } else {
        throw 'Could not launch $url';
      }
    }

我只是用了一个text Blumax作为演示,但您可以根据需要更换它。

希望这回答了你的问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接