吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 571|回复: 4
收起左侧

[求助] Flutter的SliverAppBar配置问题

[复制链接]
coderli 发表于 2024-5-23 19:51
新人小白求助:配置title的时候,actions和左边的title布局之间空隙如何调整,

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

class Home extends StatefulWidget {
  const Home({super.key});

  @override
  State<Home> createState() => _HomeState();
}

class _HomeState extends State<Home> with TickerProviderStateMixin{
  late TabController tabController;
  // 顶部导航栏
  List topTabBar = ["推荐",'大前端','推荐','动态','后端','移动开发','移动端','程序人生'];
  @override
  void initState() {
    super.initState();
    tabController = TabController(length: topTabBar.length, vsync: this);
  }
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: NestedScrollView(
        headerSliverBuilder: (BuildContext context,bool flag){
          return [
            SliverAppBar(
              pinned: true, // 配置SliverAppBar是否固定
              floating: true, // 是否随着滑动隐藏标题
              title: Material(
                color: Colors.grey,
                borderRadius: const BorderRadius.all(Radius.circular(6)),
                child: Ink(
                  // decoration: const BoxDecoration(
                  //   color: Colors.grey,
                  //   borderRadius: BorderRadius.all(Radius.circular(6))
                  // ),
                  child: InkWell(
                    onTap: (){
                      print('点击了搜索框');
                    },
                    borderRadius: const BorderRadius.all(Radius.circular(6)),
                    splashColor: Colors.pinkAccent,
                    child: Container(
                      height: 33,
                      child: const Row(
                        children: [
                          SizedBox(
                            width: 12,
                          ),
                          Icon(
                            Icons.search,
                            color: Colors.white,
                            size: 18,
                          ),
                          SizedBox(width: 6),
                          Text(
                            '搜索文章/帖子/用户',
                            style: TextStyle(
                              fontSize: 14,
                              color: Colors.white
                            ),
                          )
                        ],
                      ),
                    ),
                  ),
                ),
              ),
              actions: [
                IconButton(
                  icon: const Icon(Icons.add_circle),
                  onPressed: (){
                    print('点击了添加按钮');
                  },
                )
              ],
              // TabBar 标签栏
              bottom: TabBar(
                // 设置tabBar从最左侧开始,消除第一个左边的空隙
                tabAlignment: TabAlignment.start,
                // 设置标签栏的标签是否可以滚动
                isScrollable: true,
                // 控制器
                controller: tabController,
                tabs: topTabBar.map((item) => Tab(text:item)).toList(),
              ),
            )
          ];
        },
        body: TabBarView(
          controller: tabController,
          children: topTabBar.map((item)=>Container(height:3000,child: Text('$item'),)).toList(),
        )
      ),
    );
  }
}

1716465001943.jpg

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

米饭大师 发表于 2024-5-23 20:31
加padding 试了没
 楼主| coderli 发表于 2024-5-24 11:44
米饭大师 发表于 2024-5-24 11:54
coderli 发表于 2024-5-24 11:44
SliverAppBar没有padding这个属性

用定位重写appbar 这样就可以用了
 楼主| coderli 发表于 2024-5-24 13:55
米饭大师 发表于 2024-5-24 11:54
用定位重写appbar 这样就可以用了

用了titleSpacing和leadingWidth配合leading设置成功了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 12:54

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表