当前位置: 首页 > news >正文

贵阳做网站seo怎么推广

贵阳做网站seo,怎么推广,网站搭建服务,佛山网站建设有限公司前言 学过Java的同学,应该都知道面向对象语言的三大特征,封装、继承、多态; Dart也是面向对象的语言,但是在Flutter中的很多组件都被下划线 _ 标记为私有,导致无法继承,本文将介绍一种非私有的创建组件写…

前言

学过Java的同学,应该都知道面向对象语言的三大特征,封装、继承、多态;

Dart也是面向对象的语言,但是在Flutter中的很多组件都被下划线 '_' 标记为私有,导致无法继承,本文将介绍一种非私有的创建组件写法。

当前案例 Flutter SDK版本:3.13.2

效果图

StatefulWidget

基类:base_stateful_widget.dart

import 'package:flutter/material.dart';class BaseStatefulWidget extends StatefulWidget {final Map<String,dynamic>? arguments;const BaseStatefulWidget({super.key,this.arguments});@overrideState<BaseStatefulWidget> createState() => BaseStatefulWidgetState();
}class BaseStatefulWidgetState<T extends StatefulWidget> extends State<BaseStatefulWidget> {@overrideWidget build(BuildContext context) {return const Placeholder();}}

创建第一个非私有的StatefulWidget组件:parent_box.dart

import 'package:flutter/material.dart';
import 'package:flutter_widget_extends/base/base_stateful_widget.dart';class ParentBox extends BaseStatefulWidget {const ParentBox({super.key,super.arguments});@overrideParentBoxState<ParentBox> createState() => ParentBoxState();
}class ParentBoxState<T extends ParentBox> extends BaseStatefulWidgetState<ParentBox> {@overrideWidget build(BuildContext context) {final size = double.parse((widget.arguments?['size'] ?? 50).toString());return Container(width: size,height: size,margin: const EdgeInsets.only(bottom: 12),color: Colors.green,alignment: Alignment.center,child: content(),);}content() {final content = widget.arguments?['content'];return Text(content,style: const TextStyle(fontSize: 20,color: Colors.yellow,));}}

子类:child_box.dart

import 'package:flutter/material.dart';
import 'package:flutter_widget_extends/widget/parent_box.dart';class ChildBox extends ParentBox {const ChildBox({super.key,super.arguments});@overrideChildBoxState<ChildBox> createState() => ChildBoxState();
}class ChildBoxState<T extends ChildBox> extends ParentBoxState<ChildBox> {@overridecontent() {final content = widget.arguments?['content'];return Text(content,style: const TextStyle(fontSize: 20,color: Colors.white,));}}

子孙类:posterity_box.dart

import 'package:flutter/material.dart';
import 'package:flutter_widget_extends/widget/child_box.dart';class PosterityBox extends ChildBox {const PosterityBox({super.key,super.arguments});@overrideChildBoxState<ChildBox> createState() => PosterityBoxState();
}class PosterityBoxState<T extends PosterityBox> extends ChildBoxState<PosterityBox> {@overridecontent() {final content = widget.arguments?['content'];return Text(content,style: const TextStyle(fontSize: 20,color: Colors.black,));}}

StatelessWidget

基类:base_stateless_widget.dart

import 'package:flutter/material.dart';class BaseStatelessWidget extends StatelessWidget {final Map<String,dynamic>? arguments;const BaseStatelessWidget({super.key, this.arguments});@overrideWidget build(BuildContext context) {return const Placeholder();}
}

创建第一个非私有的StatelessWidget组件:school_box.dart

import 'package:flutter/material.dart';
import 'package:flutter_widget_extends/base/base_stateless_widget.dart';class SchoolBox extends BaseStatelessWidget {const SchoolBox({super.key,super.arguments});@overrideWidget build(BuildContext context) {final size = double.parse((arguments?['size'] ?? 50).toString());return Container(width: size,height: size,margin: const EdgeInsets.only(bottom: 12),color: Colors.cyan,alignment: Alignment.center,child: content(),);}content() {final content = arguments?['content'];return Text(content,style: const TextStyle(fontSize: 20,color: Colors.white,));}}

子类:teacher_box.dart

import 'package:flutter/material.dart';
import 'package:flutter_widget_extends/widget/school_box.dart';class TeacherBox extends SchoolBox {const TeacherBox({super.key,super.arguments});@overridecontent() {final content = arguments?['content'];return Text(content,style: const TextStyle(fontSize: 20,color: Colors.yellow,));}}

子孙类:student_box.dart

import 'package:flutter/material.dart';
import 'package:flutter_widget_extends/widget/teacher_box.dart';class StudentBox extends TeacherBox {const StudentBox({super.key,super.arguments});@overridecontent() {final content = arguments?['content'];return Text(content,style: const TextStyle(fontSize: 20,color: Colors.greenAccent,));}}

入口相关文件:test_stateful_widget.dart、test_stateless_widget.dart、main.dart

import 'package:flutter/material.dart';import '../widget/child_box.dart';
import '../widget/parent_box.dart';
import '../widget/posterity_box.dart';class TestStatefulWidget extends StatefulWidget {const TestStatefulWidget({super.key});@overrideState<TestStatefulWidget> createState() => _TestStatefulWidgetState();
}class _TestStatefulWidgetState extends State<TestStatefulWidget> {@overrideWidget build(BuildContext context) {return Scaffold(body: SizedBox(width: MediaQuery.of(context).size.width,height: MediaQuery.of(context).size.height,child: const Column(mainAxisAlignment: MainAxisAlignment.center,crossAxisAlignment: CrossAxisAlignment.center,children: [ParentBox(arguments: {'size': 260,'content': '父级',}),ChildBox(arguments: {'size': 200,'content': '子级',}),PosterityBox(arguments: {'size': 150,'content': '子孙级',}),],),),);}}
import 'package:flutter/material.dart';
import 'package:flutter_widget_extends/widget/school_box.dart';
import 'package:flutter_widget_extends/widget/student_box.dart';
import 'package:flutter_widget_extends/widget/teacher_box.dart';class TestStatelessWidget extends StatefulWidget {const TestStatelessWidget({super.key});@overrideState<TestStatelessWidget> createState() => _TestStatelessWidgetState();
}class _TestStatelessWidgetState extends State<TestStatelessWidget> {@overrideWidget build(BuildContext context) {return Scaffold(body: SizedBox(width: MediaQuery.of(context).size.width,height: MediaQuery.of(context).size.height,child: const Column(mainAxisAlignment: MainAxisAlignment.center,crossAxisAlignment: CrossAxisAlignment.center,children: [SchoolBox(arguments: {'size': 150,'content': '父级',}),TeacherBox(arguments: {'size': 200,'content': '子级',}),StudentBox(arguments: {'size': 260,'content': '子孙级',}),],),),);}}
import 'package:flutter/material.dart';
import 'package:flutter_widget_extends/page/test_stateful_widget.dart';
import 'package:flutter_widget_extends/page/test_stateless_widget.dart';void main() {runApp(const MyApp());
}class MyApp extends StatelessWidget {const MyApp({super.key});@overrideWidget build(BuildContext context) {return MaterialApp(debugShowCheckedModeBanner: false,title: 'Flutter Demo',theme: ThemeData(colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),useMaterial3: true,),home: const MyHomePage(title: 'Flutter Demo Home Page'),);}
}class MyHomePage extends StatefulWidget {const MyHomePage({super.key, required this.title});final String title;@overrideState<MyHomePage> createState() => _MyHomePageState();
}class _MyHomePageState extends State<MyHomePage> {@overrideWidget build(BuildContext context) {return Scaffold(body: SizedBox(width: MediaQuery.of(context).size.width,height: MediaQuery.of(context).size.height,child: Column(mainAxisAlignment: MainAxisAlignment.center,crossAxisAlignment: CrossAxisAlignment.center,children: [Padding(padding: const EdgeInsets.only(bottom: 16),child: ElevatedButton(onPressed: () {Navigator.push<void>(context,MaterialPageRoute<void>(builder: (BuildContext context) =>const TestStatefulWidget(),),);},child: const Text('TestStatefulWidget',style: TextStyle(fontSize: 16),),),),ElevatedButton(onPressed: () {Navigator.push<void>(context,MaterialPageRoute<void>(builder: (BuildContext context) =>const TestStatelessWidget(),),);},child: const Text('TestStatelessWidget',style: TextStyle(fontSize: 16),),)],),),);}
}

源码地址

GitHub - LanSeLianMa/flutter_widget_extends: Flutter组件 StatefulWidget、StatelessWidget 可继承写法


文章转载自:
http://dinncohedgeshrew.ssfq.cn
http://dinncoiww.ssfq.cn
http://dinncohospitium.ssfq.cn
http://dinncomicrointerrupt.ssfq.cn
http://dinncomantua.ssfq.cn
http://dinncoizard.ssfq.cn
http://dinncosowbread.ssfq.cn
http://dinncointerneuron.ssfq.cn
http://dinncoanemochore.ssfq.cn
http://dinncobunk.ssfq.cn
http://dinncodesman.ssfq.cn
http://dinncoreindoctrination.ssfq.cn
http://dinncomotopia.ssfq.cn
http://dinncobail.ssfq.cn
http://dinncoelm.ssfq.cn
http://dinncofornix.ssfq.cn
http://dinncohyperpietic.ssfq.cn
http://dinncospectrometric.ssfq.cn
http://dinncosqueak.ssfq.cn
http://dinncoplinth.ssfq.cn
http://dinncomonomerous.ssfq.cn
http://dinncoacinus.ssfq.cn
http://dinncohomocyclic.ssfq.cn
http://dinnconotchwing.ssfq.cn
http://dinncooverwrite.ssfq.cn
http://dinncorival.ssfq.cn
http://dinncopontil.ssfq.cn
http://dinncovaishnava.ssfq.cn
http://dinncocredential.ssfq.cn
http://dinncotorrentially.ssfq.cn
http://dinncomorphographemic.ssfq.cn
http://dinncodendroclimatology.ssfq.cn
http://dinncocourtside.ssfq.cn
http://dinncokinship.ssfq.cn
http://dinncoworkstation.ssfq.cn
http://dinncocytophysiology.ssfq.cn
http://dinncolav.ssfq.cn
http://dinncoagroclimatology.ssfq.cn
http://dinncodangleberry.ssfq.cn
http://dinncoperitectic.ssfq.cn
http://dinncomilitarise.ssfq.cn
http://dinncofolklorist.ssfq.cn
http://dinnconbf.ssfq.cn
http://dinncochabasite.ssfq.cn
http://dinncobrighten.ssfq.cn
http://dinncoacrodromous.ssfq.cn
http://dinncosamara.ssfq.cn
http://dinncofinery.ssfq.cn
http://dinncograngerize.ssfq.cn
http://dinncomelilla.ssfq.cn
http://dinncovigia.ssfq.cn
http://dinncojarosite.ssfq.cn
http://dinncofrontal.ssfq.cn
http://dinncointerproximal.ssfq.cn
http://dinncobenzoin.ssfq.cn
http://dinncovalvelet.ssfq.cn
http://dinncoresentfully.ssfq.cn
http://dinncopresentiment.ssfq.cn
http://dinncodipster.ssfq.cn
http://dinncononresistance.ssfq.cn
http://dinncolabium.ssfq.cn
http://dinncopediatry.ssfq.cn
http://dinncodevildom.ssfq.cn
http://dinnconeighbourly.ssfq.cn
http://dinncothermoammeter.ssfq.cn
http://dinncodisinflation.ssfq.cn
http://dinncoindissoluble.ssfq.cn
http://dinncocitrullin.ssfq.cn
http://dinncocgi.ssfq.cn
http://dinncoglandule.ssfq.cn
http://dinncoubangi.ssfq.cn
http://dinncodehiscent.ssfq.cn
http://dinncoprovender.ssfq.cn
http://dinncopreemphasis.ssfq.cn
http://dinncorealgar.ssfq.cn
http://dinncoreign.ssfq.cn
http://dinncocyclostomate.ssfq.cn
http://dinncoelucidative.ssfq.cn
http://dinncocornucopian.ssfq.cn
http://dinncochanterelle.ssfq.cn
http://dinncoshorten.ssfq.cn
http://dinncomultangular.ssfq.cn
http://dinncobacteriologist.ssfq.cn
http://dinncorulebook.ssfq.cn
http://dinncoodorous.ssfq.cn
http://dinncosinology.ssfq.cn
http://dinncochairman.ssfq.cn
http://dinncotibet.ssfq.cn
http://dinncounseat.ssfq.cn
http://dinncoorthographic.ssfq.cn
http://dinncobeeswing.ssfq.cn
http://dinncofulminous.ssfq.cn
http://dinncoertebolle.ssfq.cn
http://dinncocontainerization.ssfq.cn
http://dinnconondairy.ssfq.cn
http://dinncolongwall.ssfq.cn
http://dinncoshrine.ssfq.cn
http://dinncohallstadt.ssfq.cn
http://dinncoblockader.ssfq.cn
http://dinncopyroclastic.ssfq.cn
http://www.dinnco.com/news/97576.html

相关文章:

  • 上海建筑建材业网站网站设计公司苏州
  • 网站代码怎么查看网页设计制作网站教程
  • 北京服装网站建设seo广告投放是什么意思
  • 做网站选哪家公司好百度怎么做推广
  • wordpress 手机模版优化教程网站推广排名
  • 湖南省交通建设质量安全监督管理局网站seo观察网
  • 响应式WordPress企业主题首页排名优化公司
  • 做的比较好的企业网站百度一下首页版
  • 免费b网站推广自己有货源怎么找客户
  • xsl做书店网站com网站域名注册
  • 企业每年向工商网站做申报页面设计漂亮的网站
  • 创建网站制作首页新疆头条今日头条新闻
  • wordpress 手机站seo数据
  • 湖南网站建设公司 要上磐石网络百度小说排行榜总榜
  • mac 网站开发 软件杭州营销策划公司排名
  • 福田网站建设设计公司哪家好游戏推广员是做什么的
  • 网站首页三张海报做多大2023年8月份新冠
  • 品牌网站建设 细致磐石网络网赌怎么推广拉客户
  • 官方网站建设 在线磐石网络全球疫情最新数据
  • cms网站后台模版seo站点是什么意思
  • 广西房地产网站建设网站优化及推广
  • 企业网站托管注意事项上海网络推广外包公司
  • 驻马店网站建设温州seo
  • 做图素材网站哪个好免费域名申请网站大全
  • 做网站的设计尺寸百度搜索引擎营销
  • 个人服务器 网站建设能够免费换友链的平台
  • 滨州网站建设百度知道首页网
  • 自助建站网信息发布平台上海seo优化
  • wordpress 仪表盘裁剪图片谷歌搜索引擎优化
  • 建商城网站crm系统成功案例分享ppt