flutter - 颤振类双扩展
问题描述
是否可以在单个类中进行双重扩展?就我而言,我有课class AddCreditsState extends State<AddCredits>
我只想扩展HookWidget
我的class AddCreditsState extends State<AddCredits>
,
class AddCreditsState extends State<AddCredits>{ // how do i insert the `HookWidget` here?
return Scaffold(
backgroundColor: Color.fromRGBO(10, 15, 39, 1),
body: SingleChildScrollView(
child: Container(
width: globals.screenWidth,
height: globals.screenHeight,
margin: EdgeInsets.only(top: 25),
child: Column(
children: [headercol, body],
)),
),
);
}
解决方案
在 Dart 中,你可以使用implements
多个接口,但 Dart 只支持单继承。所以,你不能extends
来自多个班级。
你可以使用多个 Mixin 和with
.
但在这种特殊情况下,您可能想要的是一个StatefulHookWidget,一个可以在其构建方法中使用钩子的 StatefulWidget。
完整的源代码
import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
void main() {
runApp(
MaterialApp(
debugShowCheckedModeBanner: false,
title: 'StatefulHookWidget Example',
home: HomePage(),
),
);
}
class HomePage extends StatefulHookWidget {
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
String _state = 'Hello';
@override
Widget build(BuildContext context) {
final _hookedVar = useState('Hello');
return Scaffold(
appBar: AppBar(title: Text('StatefulHookWidget Example')),
body: Container(
padding: EdgeInsets.all(16.0),
alignment: Alignment.center,
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Text('STATE: $_state'),
const SizedBox(height: 16.0),
Text('HOOK: ${_hookedVar.value}'),
const SizedBox(height: 16.0),
ElevatedButton(
onPressed: () {
setState(() => _state = 'Goodbye');
_hookedVar.value = 'Goodbye';
},
child: Text('CLICK ME'),
)
],
),
),
);
}
}
推荐阅读
- reactjs - Strapi 和前端(反应)托管
- python-3.x - Discord Bot Kick 命令无法按预期工作
- python - 循环并更新数组值直到满足条件,或者直到完成 100 次循环?
- wordpress - $wpdb 更新多个复选框
- ios - 如何为uitableviewcell的内表调用didselectrow方法
- c# - 实体框架 6.1.3 当 dbContext 处理的分离对象为空时
- c# - 为什么只能从第二道门关上?第一个保持打开
- titanium - Titanium App 无法启动并出现 ti.main.js 文件未找到错误
- mysql - 如何在mysql中选择两个不同的日期?
- javascript - 成功登录keycloak后如何与jaspersoft握手