Flutter - 使用 Material 在长按上更改应用栏

标签 flutter gesture appbar

我正在尝试用 Flutter 做这种事情: https://storage.googleapis.com/spec-host-backup/mio-design%2Fassets%2F0B3T7oTWa3HiFcHBDaTlreHdVZGc%2Fitem-selection-selecting-items.mp4

var gestureTemp = GestureDetector(
    onLongPress: (){
      print('LONG PRESSED');
      //CHANGE APPBAR
    },
    child: Padding(
        padding: EdgeInsets.only(right:8),
        child: Chip(
            avatar: CircleAvatar(
                backgroundColor: Colors.grey.shade800,
                child: icon
            ),
            label: Text(space.label, style: TextStyle(fontSize: 12, color:Colors.grey.shade800))
    ),
  ));

它检测到长按,但我不知道如何更改我的应用栏...

有什么想法吗?

编辑:这是我所做的

var appBar1 = AppBar(...);
var appBar2 = AppBar(...);
var appBar = appBar1;

我的 appBar 显示在我的 Scaffold 中。

在我的 GestureDetector 上:

onLongPress: (){
  print('LONG PRESSED');
  setState(() {
    appBar = appBar2;
  });
},

最佳答案

欢迎使用 StackOverflow!

您描述的方法听起来很正确。这是一个独立示例,因此您可以仔细检查您的代码:

AppBar Switch Demo

import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(home: MyPage());
  }
}

class MyPage extends StatefulWidget {
  @override
  _MyPageState createState() => _MyPageState();
}

class _MyPageState extends State<MyPage> {
  static final AppBar _defaultBar = AppBar(
    title: Text('Inbox'),
    leading: Icon(Icons.menu),
    actions: <Widget>[Icon(Icons.search), Icon(Icons.more_vert)],
    backgroundColor: Colors.black,
  );

  static final AppBar _selectBar = AppBar(
    title: Text('1'),
    leading: Icon(Icons.close),
    actions: <Widget>[
      Icon(Icons.flag),
      Icon(Icons.delete),
      Icon(Icons.more_vert)
    ],
    backgroundColor: Colors.deepPurple,
  );

  AppBar _appBar = _defaultBar;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: _appBar,
      body: Center(
        child: RaisedButton(
          child: Text('Switch!'),
          onPressed: () {
            setState(() {
              _appBar = _appBar == _defaultBar
                  ? _selectBar
                  : _defaultBar;
            });
          },
        ),
      ),
    );
  }
}

关于Flutter - 使用 Material 在长按上更改应用栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55279617/

相关文章:

ios - SwiftUI ScrollView 和 OnLongPressGesture

ios - 将手势识别器添加到 MKPointAnnotation

flutter - 如何将 searchBar 放入 appBar - Flutter?

c# - WinRt : twoway binding for Appbar does not work

android - 图片 Asset Studio 在 flutter 项目中不可用

firebase - 使用 firebase 时真的需要本地状态管理吗?

visual-studio-code - VS Code(OSX)Flutter热重载不是由保存触发的

flutter - 如何为 Dart/Flutter 包设置镜像/公司范围的缓存?

xaml - Xamarin TapGestureRecognizer 有时无法正常工作

c# - 全屏 WPF 程序中的 Metro 风格 Appbar