2017-10-23 3 views
0

Auf der Suche nach etwas Hilfe bei der Änderung der AppBar title auf nachfolgenden Seiten, so dass ich Tabs und einige nicht. MyApp ist auf der Authentifizierungsseite meiner App definiert. Ich gehe dann auf eine neue Seite, die die Tabs enthält, dann habe ich andere Seiten von einigen der Tab-Seiten, was ich tun können, ist, anstatt eine andere AppBar unter die Haupt, möchte ich nur die title ändern der Haupt AppBar wenn ich auf einer der anderen Seiten bin.Flutter ändern Haupt Appbar Titel auf anderen Seiten

Irgendwelche Ideen, wie dies zu tun ist, sah ich ein Beispiel, das nicht passen, da meine Registerkarten anders eingerichtet sind und nicht passen konnten, dachte vielleicht gab es eine Möglichkeit, den Titel zu definieren, so dass ich den Status ändern kann etwas und ändere den Titel.

Irgendwelche Ideen oder Gedanken dazu?

Antwort

0

Sie können ein TabController hinzufügen und listen, um es hinzuzufügen, so dass Sie setState rufen, wenn Sie zwischen den Tab s wechseln, und ändern Sie den AppBar Titel entsprechend.

enter image description here

import "package:flutter/material.dart"; 

void main(){ 
    runApp(new MaterialApp(home:new MyApp(), 
)); 
} 

class MyApp extends StatefulWidget { 
    @override 
    _MyAppState createState() => new _MyAppState(); 
} 

class _MyAppState extends State<MyApp> with TickerProviderStateMixin{ 
    final List<MyTabs> _tabs = [new MyTabs(title: "Teal",color: Colors.teal[200]), 
    new MyTabs(title: "Orange",color: Colors.orange[200]) 
    ]; 
    MyTabs _myHandler ; 
    TabController _controller ; 
    void initState() { 
    super.initState(); 
    _controller = new TabController(length: 2, vsync: this); 
    _myHandler = _tabs[0]; 
    _controller.addListener(_handleSelected); 
    } 
    void _handleSelected() { 
    setState(() { 
     _myHandler= _tabs[_controller.index]; 
    }); 
    } 
    @override 
    Widget build(BuildContext context) { 
    return new Scaffold(
     appBar: new AppBar(title: new Text(_myHandler.title), 
     backgroundColor: _myHandler.color, 
     bottom: new TabBar(
      controller: _controller, 
      tabs: <Tab>[ 
       new Tab(text: _tabs[0].title,), 
       new Tab(text: _tabs[1].title,) 
      ], 
    ),), 
    ); 
    } 
} 

class MyTabs { 
    final String title; 
    final Color color; 
    MyTabs({this.title,this.color}); 
} 
+0

, die für den Tabs nicht lösen, aber dann, wenn ich auf einer Registerkarte bin und zu einer anderen Seite außerhalb des Registerkarten navigieren, das ist, wo ich bin stecken, nicht sicher, wie die appbar Titel zu erhalten, Veränderung. – Robert

+0

Ich verstehe nicht wirklich was du meinst, kannst du mehr ausarbeiten? – aziza

+0

So zum Beispiel rufe ich meinen dritten Tab an, der Chat ist, dann bekomme ich eine Liste von Chat-Threads, wenn du auf einen klickst, gehst du auf eine neue Seite, die kein Tab ist, um das Chat-Detail zu sehen und zu antworten, etc. .. Wenn ich auf diese neue Seite gehe, kann ich den Appbar-Titel nicht ändern, ich muss eine neue Appbar hinzufügen, die unter der Haupt-Appbar ist. Ich versuche, den Haupt-Appbar-Titel auf diesen neuen Seiten ändern zu können. – Robert