如何根据用户点击页面来设置appTitle?

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

主页上有一个平面图的视图,每个房间都“展示”不同的作品(请参见所附图像) >

图库名称{salmonComplex}在应用打开时显示为标题,但是当用户用胶带贴进其中一个房间时,我希望房间名称替换或出现在{salmonComplex}下

我创建了一个类MainPageHeading和一个List<String>来生成标题,并带有一个整数mainPageNumber,以便我可以生成标题(我从最近课程中构建的一个测验应用程序中借用了这个想法)。

这里是东西

是否有一种方法可以显示不同的房间名称,而不必复制整个班级例如,使用新类名中的所有代码,例如originalExhibitionHeading。

我的意思是说这很长,但是有一种方法可以使用List和我需要的位。

现在,它通过MainPageHeading []在列表中查找。锁定页面标题。是否有更好的方式来划分房间标题,具体取决于用户进入哪个房间。

任何想法都会节省我的时间。

thnks

    class MainPageHeading extends StatefulWidget {
    @override
    _MainPageHeadingState createState() => _MainPageHeadingState();
    }

    class _MainPageHeadingState extends State<MainPageHeading> {
    List<String> mainPageHeading = [
    '{ theSalmon', //0 mainloading page heading
    'Complex', //1
    ' }' //2
    ];

    int mainPageNumber = 0;

    @override
    Widget build(BuildContext context) {
     return Container(
      child: RichText(
       text: TextSpan(
        text: mainPageHeading[0],
         style: TextStyle(
            color: Colors.grey[700],
            fontFamily: 'saturn',
            fontSize: 25.0,
            fontWeight: FontWeight.bold),
        children: [
          TextSpan(
              text: mainPageHeading[1],
              style: TextStyle(
                color: Colors.grey[500],
                fontFamily: 'saturn',
                fontSize: 25.0,
                fontStyle: FontStyle.italic,
              )),
          TextSpan(
              text: mainPageHeading[2],
              style: TextStyle(
                color: Colors.grey[700],
                fontFamily: 'saturn',
                fontSize: 25.0,
                fontWeight: FontWeight.bold,
              )),
             ]),
            textAlign: TextAlign.center,
           ),
          );
          }
         }



           [homePage][1]

“模拟器img”

    void main() {
    runApp(AppState());
    }

    class AppState extends StatefulWidget {
    @override
    _AppStateState createState() => _AppStateState();
    }

    class _AppStateState extends State<AppState> {
    var titleText = "FirstTitle";

     @override
    Widget build(BuildContext context) {
    return MaterialApp(
      title: "Titolo",
      theme: ThemeData(primarySwatch: Colors.blue),
      home: Scaffold(
        appBar: AppBar(
          title: TitleWidget(),
        ),
        body: Center(
          child: FlatButton(
            child: Text("Change title"),
            onPressed: () {
              setState(() {
                titleText = "Other Title";
              });
            },
          ),
        ),
      ),
      );
     }
     }

     class TitleWidget extends StatelessWidget {
     final titleText;

     TitleWidget({this.titleText});

    @override
    Widget build(BuildContext context) {
     return Text(titleText);
    }
    }
flutter flutter-layout
1个回答
0
投票

我为您编写了一些示例代码,以演示如何执行此类操作。

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