Flutter - Изменить панель приложения при длительном нажатии на материал - PullRequest
0 голосов
/ 21 марта 2019

Я пытаюсь сделать что-то подобное с 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 отображается в моем эшафот.

На моем GestureDetector:

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

1 Ответ

1 голос
/ 21 марта 2019

Добро пожаловать в 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;
            });
          },
        ),
      ),
    );
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...