首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为我的颤振应用程序创建一个基页面

如何为我的颤振应用程序创建一个基页面
EN

Stack Overflow用户
提问于 2022-09-24 15:36:57
回答 2查看 55关注 0票数 0

我正在尝试创建一个basePage,它可以作为我的颤振应用程序的基本页面,但是我得到了一个错误,我不知道为什么

base_page.dart

代码语言:javascript
复制
 //@dart=2.9
import 'package:flutter/material.dart';
import 'package:myapp/services/shared_service.dart';
import 'categories/categories_list.dart';

class BasePage extends StatefulWidget {
  @override
  State<BasePage> createState() => _BasePageState();
}

class _BasePageState<T extends BasePage> extends State<T> {
  String pageTitle = "";

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: _buildAppBar(),
      body: pageUI(),
    );
  }

  Widget _buildAppBar() {
    return AppBar(
        title: Text(pageTitle),
        elevation: 0,
        automaticallyImplyLeading: true,
        backgroundColor: Theme.of(context).primaryColor,
        actions: [
          IconButton(
            icon: new Icon(
              Icons.logout,
              color: Colors.black,
            ),
            onPressed: () {
              SharedService.logout();
            },
          ),
          SizedBox(
            width: 10,
          )
        ]);
  }

  Widget pageUI() {
    return null;
  }

  @override
  void dispose() {
    super.dispose();
  }
}

categories_list.dart

代码语言:javascript
复制
 //@dart=2.9
import 'package:flutter/material.dart';
import '../base_page.dart';

class CategoriesList extends BasePage {
  @override
  _State createState() => _CategoriesListState();
}

class _State extends BasePageState<CategoriesList> {
  @override
  Widget PageUI() {
    return Container(
      child: Text("Categories List"),
    );
  }
}

我得到了以下错误

我正在学习颤振课程,同样的代码也适用于讲师。

如果可能的话,我的代码有什么问题

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-09-24 15:59:05

首先,将您的主类更改为:

代码语言:javascript
复制
class BasePage extends StatefulWidget {
  @override
  State<StatefulWidget> createState() => BasePageState<BasePage>();
}

class BasePageState<T extends StatefulWidget> extends State<T> {

...

}

然后像下面这样扩展列表小部件:

代码语言:javascript
复制
class CategoriesList extends BasePage {
  @override
  State<StatefulWidget> createState() => _CategoriesListState();
}

class _CategoriesListState extends BasePageState<CategoriesList> {
  @override
  Widget PageUI() {
    return Container(
      child: Text("Categories List"),
    );
  }
}
票数 0
EN

Stack Overflow用户

发布于 2022-09-24 15:45:39

只需将createState方法改为如下所示:

代码语言:javascript
复制
import 'package:flutter/material.dart';
import '../base_page.dart';

class CategoriesList extends BasePage {
  @override
  _State createState() => _State();
}

class _State extends BasePageState<CategoriesList> {
  @override
  Widget PageUI() {
    return Container(
      child: Text("Categories List"),
    );
  }
}

您创建的状态类已经是私有的,因为您使用的是下划线,所以这种方法不那么冗长。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73838489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档