Flutter:更改应用栏上文本的位置

问题描述 投票:1回答:1

如何更改应用栏右侧的文本“ Sito Web”的位置?我的类蛋try

alignment: Alignment.TopRight

但是他将其移动到了应用栏右上角。在这里,我的意思是https://ibb.co/X28TzNN的屏幕将“ Sito Web”的位置更改为红色线圈的位置。这就是代码,我也尝试使用此方法,但不能在应用栏中移动。这里是带有应用栏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
         ]
       )
    );
  }
}

这里是带有容器超链接的文件。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',),
        ),
      )
    );
  }
}
android flutter dart flutter-layout
1个回答
0
投票

您可以使用Row小部件,并使用mainAxisAlignment: MainAxisAlignment.spaceBetween分别在BluMax的左侧和右侧渲染Sito Webappbar元素。而且,由于要在点击sito web之后打开一个url,因此可以用GestureDetector包装该元素,然后调用launchURL方法来打开所需的url。有效的示例代码如下:

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"),
                ),
              ],
            )
          ],
        ),

这在屏幕上显示为:

enter image description here...

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

我只是使用text Blumax进行演示,但是您可以根据需要替换它。

希望这能回答您的问题。

© www.soinside.com 2019 - 2024. All rights reserved.