我正在尝试创建一个basePage,它可以作为我的颤振应用程序的基本页面,但是我得到了一个错误,我不知道为什么
base_page.dart
//@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
//@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"),
);
}
}我得到了以下错误

我正在学习颤振课程,同样的代码也适用于讲师。
如果可能的话,我的代码有什么问题
发布于 2022-09-24 15:59:05
首先,将您的主类更改为:
class BasePage extends StatefulWidget {
@override
State<StatefulWidget> createState() => BasePageState<BasePage>();
}
class BasePageState<T extends StatefulWidget> extends State<T> {
...
}然后像下面这样扩展列表小部件:
class CategoriesList extends BasePage {
@override
State<StatefulWidget> createState() => _CategoriesListState();
}
class _CategoriesListState extends BasePageState<CategoriesList> {
@override
Widget PageUI() {
return Container(
child: Text("Categories List"),
);
}
}发布于 2022-09-24 15:45:39
只需将createState方法改为如下所示:
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"),
);
}
}您创建的状态类已经是私有的,因为您使用的是下划线,所以这种方法不那么冗长。
https://stackoverflow.com/questions/73838489
复制相似问题