申博太阳城www.151514.com_太阳城娱乐推荐www.670014.com
高级副总裁毛美萍曾任汇纳科技(300609)营销中心总经理,拥有超过15年的营销、市场及运营管理经验。
5、 产品开发依赖经验和对别人成功热销的案例的学习,很难跟上市场消费变化,无法总结出批量复制和扩张的方法。
欧莱雅中国消费者&市场洞察总监陶俊认为双方是互补的关系,TMIC是比较好的平台,而限制于天猫平台的枢纽,它的数据大部分集中于两个方面,一个是购买行为,一个是它在阿里体系里面的媒体行为,这两个方面对于我们理解消费者是极大的补充。
时至2019年,投资人们会如何重新审视AI投资,估值泡沫还有多大,呼之欲出的5G又会为AI投资带来什么变化?36氪邀请了君盛投资合伙人李昊、久友资本董事长李阳、十方创投创始合伙人吴曼、联想创投董事总经理梁颖和同创伟业董事总经理陈悦林来共同探讨。
在服务过程中,快捷回复、直发服务小程序等能力让导购做到秒回的同时解决好顾客的问题,扫除购物障碍。
var default_decoration = BoxDecoration( border: Border.all(width: 3, color: Colors.deepOrange), borderRadius: BorderRadius.all( Radius.circular(5), )); ... ... child: Container( margin: EdgeInsets.all(8), decoration: default_decoration, child: widget.child, )); 最后给大家一个完整的最新的技术方案的例子代码: 先绘制欢迎页,效果图如下: 代码如下: // 启动欢迎页 import dart:async; import package:flutter/material.dart; import package:flutter/services.dart; import ui/tv_page.dart; void main => runApp(MyApp); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { SystemChrome.setEnabledSystemUIOverlays([]); // 强制横屏 SystemChrome.setPreferredOrientations([ DeviceOrientation.landscapeLeft, DeviceOrientation.landscapeRight ]); return MaterialApp( title: Flutter TV, debugShowCheckedModeBanner: false, theme: ThemeData( primarySwatch: Colors.blue, ), home: MyHomePage, ); } } class MyHomePage extends StatefulWidget { @override _MyHomePageState createState => _MyHomePageState; } class _MyHomePageState extends State<MyHomePage> { Timer timer; @override void initState { startTimeout; super.initState; } @override Widget build(BuildContext context) { return Scaffold( primary: true, backgroundColor: Colors.black54, body: Center( child: Text( 芒果TV, style: TextStyle( fontSize: 50, color: Colors.deepOrange, fontWeight: FontWeight.normal), ), ), ); } _toPage { Navigator.pushAndRemoveUntil( context, MaterialPageRoute(builder: (context) => TVPage), (route) => route == null, ); } //倒计时处理 static const timeout = const Duration(seconds: 3); startTimeout { timer = Timer(timeout, handleTimeout); return timer; } void handleTimeout { _toPage; } @override void dispose { if (timer != null) { timer.cancel; timer = null; } super.dispose; } } 应用首页,效果图如下: 代码如下: // 应用首页 import dart:async; import package:flutter/material.dart; import package:flutter/services.dart; import package:flutter_tv/utils/time_utils.dart; import package:flutter_tv/widgets/tv_widget.dart; import home_page.dart; import list_page.dart; class TVPage extends StatefulWidget { @override State<StatefulWidget> createState { SystemChrome.setEnabledSystemUIOverlays([]); // 强制横屏 SystemChrome.setPreferredOrientations( [DeviceOrientation.landscapeLeft, DeviceOrientation.landscapeRight]); return TVPageState; } } class TVPageState extends State<TVPage> with SingleTickerProviderStateMixin { TabController _tabController; Timer timer; var timeString = TimeUtils.getTime; bool init = false; FocusNode focusNodeB0 = FocusNode; FocusNode focusNodeB1 = FocusNode; @override void initState { super.initState; //initialIndex为初始选中第几个,length为数量 _tabController = TabController(initialIndex: 0, length: 8, vsync: this); // 监听 _tabController.addListener( { switch (_tabController.index) { case 0: break; case 1: break; } }); focusNodeB0.addListener( { if (focusNodeB0.hasFocus) { setState( { _tabController.animateTo(0); }); } }); focusNodeB1.addListener( { if (focusNodeB1.hasFocus) { setState( { _tabController.animateTo(1); }); } }); } @override Widget build(BuildContext context) { return Container( color: Colors.black87, padding: EdgeInsets.all(30), child: Scaffold( appBar: AppBar( backgroundColor: Colors.black87, leading: Icon( Icons.live_tv, color: Colors.deepOrange, size: 50, ), title: Text( 芒果TV, style: TextStyle( fontSize: 30, color: Colors.white, fontStyle: FontStyle.italic), ), primary: true, actions: <Widget>[ FlatButton( child: Text( $timeString, style: TextStyle(color: Colors.white), ), ), ], // 设置TabBar bottom: TabBar( controller: _tabController, indicatorColor: Colors.deepOrange, labelColor: Colors.deepOrange, unselectedLabelColor: Colors.white, tabs: <Widget>[ Tab( child: TVWidget( hasDecoration: false, focusChange: (hasFocus) { if (hasFocus) { setState( { _tabController.animateTo(0); }); } }, child: Text( 首页, style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold), ), requestFocus: true, ), ), Tab( child: TVWidget( hasDecoration: false, focusChange: (hasFocus) { if (hasFocus) { setState( { _tabController.animateTo(1); }); } }, child: Text( 精选, style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold), ), )), Tab( child: TVWidget( hasDecoration: false, focusChange: (hasFocus) { if (hasFocus) { setState( { _tabController.animateTo(2); }); } }, onclick: { print(点击); }, child: Text( 国产, style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold), ), )), Tab( child: TVWidget( hasDecoration: false, focusChange: (hasFocus) { if (hasFocus) { setState( { _tabController.animateTo(3); }); } }, child: Text( 欧美, style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold), ), )), Tab( child: TVWidget( hasDecoration: false, focusChange: (hasFocus) { if (hasFocus) { setState( { _tabController.animateTo(4); }); } }, child: Text( 日漫, style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold), ), ), ), Tab( child: TVWidget( hasDecoration: false, focusChange: (hasFocus) { if (hasFocus) { setState( { _tabController.animateTo(5); }); } }, child: Text( 亲子, style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold), ), ), ), Tab( child: TVWidget( hasDecoration: false, focusChange: (hasFocus) { if (hasFocus) { setState( { _tabController.animateTo(6); }); } }, child: Text( 少综, style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold), ), ), ), Tab( child: TVWidget( focusChange: (hasFocus) { if (hasFocus) { setState( { _tabController.animateTo(7); }); } }, hasDecoration: false, child: Text( 分类, style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold), ), ), ), ], ), ), body: TabBarView( controller: _tabController, children: <Widget>[ HomePage, ListPage, HomePage, ListPage, HomePage, ListPage, HomePage, ListPage, ], ), ), ); } startTimeout { timer = Timer.periodic(Duration(minutes: 1), (t) { setState( { timeString = TimeUtils.getTime; }); }); } @override void dispose { if (timer != null) { timer.cancel; timer == null; } super.dispose; } } // TAB页面中的其中一个页面,其他类似 import package:flutter/material.dart; import package:flutter/widgets.dart; import package:flutter_tv/widgets/tv_widget.dart; class HomePage extends StatefulWidget { const HomePage({ Key key, @required this.index, }) : super(key: key); final int index; @override State<StatefulWidget> createState { return HomePageState; } } class HomePageState extends State<HomePage> with AutomaticKeepAliveClientMixin { @override void initState { super.initState; } @override Widget build(BuildContext context) { return Container( color: Colors.black87, child: Row( children: <Widget>[ Flexible( child: Column( children: <Widget>[ _buildItem(0), _buildItem(1), _buildItem(2), ], ), flex: 1, ), Flexible( child: Column( children: <Widget>[ _buildImageItem(3, 2), Expanded( flex: 1, child: Row( children: <Widget>[ _buildImageItem(4, 1), _buildImageItem(5, 1), ], )), ], ), flex: 4, ), Flexible( child: Column( children: <Widget>[ _buildImageItem(6, 2), _buildImageItem(7, 1), ], ), flex: 2, ), Flexible( child: Column( children: <Widget>[ _buildImageItem(8, 2), _buildImageItem(9, 1), ], ), flex: 2, ), ], ), ); } _buildItem(int index) { return Expanded( child: TVWidget( focusChange: (hasfocus) {}, child: Container( width: MediaQuery.of(context).size.width, child: GestureDetector( child: Card( elevation: 5, margin: EdgeInsets.all(0), color: _colors.elementAt(index), child: Container( child: Column( crossAxisAlignment: CrossAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ _icons.elementAt(index), _title.elementAt(index), ], ), ), ), onTap: { _click(index); }, ), )), flex: 1, ); } _buildImageItem(int index, int flex) { return Expanded( child: TVWidget( child: Container( width: MediaQuery.of(context).size.width, child: GestureDetector( child: Card( elevation: 5, margin: EdgeInsets.all(0), color: _colors.elementAt(index), child: Container( child: Stack( alignment: Alignment.bottomLeft, children: <Widget>[ ClipRRect( child: Image.asset( _images.elementAt(index), fit: BoxFit.fill, width: MediaQuery.of(context).size.width, height: MediaQuery.of(context).size.height, ), borderRadius: BorderRadius.all( Radius.circular(5), ), ), Container( width: MediaQuery.of(context).size.width, child: Column( mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, children: <Widget>[ _title.elementAt(index), index == 3 ? _des.elementAt(index) : SizedBox( height: 0, ), ], ), color: _colors.elementAt(index).withAlpha(240), padding: EdgeInsets.all(5), ), ], ), ), ), onTap: { _click(index); }, ), ), focusChange: (hasfocus) {}, ), flex: flex, ); } void _click(int index) { switch (index) { case 0: break; case 4: // Navigator.push(context, MaterialPageRoute(builder: (context) { // return AboutPage; // })); break; } } List<Icon> _icons = [ Icon( Icons.search, size: 38, color: Colors.white, ), Icon( Icons.history, size: 38, color: Colors.white, ), Icon( Icons.event, size: 38, color: Colors.white, ), Icon( Icons.share, size: 38, color: Colors.deepPurpleAccent, ), Icon( Icons.error_outline, size: 38, color: Colors.orange, ), Icon( Icons.settings, size: 38, color: Colors.red, ) ]; List<String> _images = [ assets/htpy.jpg, assets/htpy.jpg, assets/htpy.jpg, assets/htpy.jpg, assets/agzz.jpg, assets/amypj.jpg, assets/hmjz.jpg, assets/dxflqm.jpg, assets/lifeandpi.jpg, assets/nanasqc.jpg, ]; List<Color> _colors = [ Colors.red, Colors.orange, Colors.green, Colors.red, Colors.orange, Colors.green, Colors.orange, Colors.orange, Colors.orange, Colors.orange, ]; List<Text> _title = [ Text( 搜索, style: TextStyle(color: Colors.white, fontSize: 18), ), Text( 历史, style: TextStyle(color: Colors.white, fontSize: 18), ), Text( 专题, style: TextStyle(color: Colors.white, fontSize: 18), ), Text( 环太平洋, style: TextStyle(color: Colors.white, fontSize: 18), ), Text( 阿甘正传, style: TextStyle(color: Colors.white, fontSize: 18), ), Text( 傲慢与偏见, style: TextStyle(color: Colors.white, fontSize: 18), ), Text( 黑猫警长, style: TextStyle(color: Colors.white, fontSize: 18), ), Text( 当幸福来敲门, style: TextStyle(color: Colors.white, fontSize: 18), ), Text( Life Or PI, style: TextStyle(color: Colors.white, fontSize: 18), ), Text( 哪啊哪啊神去村, style: TextStyle(color: Colors.white, fontSize: 18), ), ]; List<Text> _des = [ Text( 非常好看的电影, style: TextStyle(color: Colors.white, fontSize: 12), ), Text( 设置密码锁, style: TextStyle(color: Colors.white, fontSize: 12), ), Text( 吐槽反馈你的想法, style: TextStyle(color: Color.fromRGBO(162, 162, 162, 1), fontSize: 16), ), Text( 非常好看的电影, style: TextStyle(color: Colors.white, fontSize: 12), ), Text( 版本信息, style: TextStyle(color: Color.fromRGBO(162, 162, 162, 1), fontSize: 16), ), Text( 系统相关设置, style: TextStyle(color: Color.fromRGBO(162, 162, 162, 1), fontSize: 16), ), Text( 系统相关设置, style: TextStyle(color: Color.fromRGBO(162, 162, 162, 1), fontSize: 16), ), ]; @override // TODO: implement wantKeepAlive bool get wantKeepAlive => true; } 封装的核心类: // 封装的核心焦点处理类 import package:flutter/material.dart; import package:flutter/services.dart; import package:flutter/widgets.dart; class TVWidget extends StatefulWidget { TVWidget( {Key key, @required this.child, @required this.focusChange, @required this.onclick, @required this.decoration, @required this.hasDecoration = true, @required this.requestFocus = false}) : super(key: key); Widget child; onFocusChange focusChange; onClick onclick; bool requestFocus; BoxDecoration decoration; bool hasDecoration; @override State<StatefulWidget> createState { return TVWidgetState; } } typedef void onFocusChange(bool hasFocus); typedef void onClick; class TVWidgetState extends State<TVWidget> { FocusNode _focusNode; bool init = false; var default_decoration = BoxDecoration( border: Border.all(width: 3, color: Colors.deepOrange), borderRadius: BorderRadius.all( Radius.circular(5), )); var decoration = null; @override void initState { super.initState; _focusNode = FocusNode; _focusNode.addListener( { if (widget.focusChange != null) { widget.focusChange(_focusNode.hasFocus); } if (_focusNode.hasFocus) { setState( { if (widget.hasDecoration) { decoration = widget.decoration == null ? default_decoration : widget.decoration; } }); } else { setState( { decoration = null; }); } }); } @override Widget build(BuildContext context) { if (widget.requestFocus && !init) { FocusScope.of(context).requestFocus(_focusNode); init = true; } return RawKeyboardListener( focusNode: _focusNode, onKey: (event) { if (event is RawKeyDownEvent && event.data is RawKeyEventDataAndroid) { RawKeyDownEvent rawKeyDownEvent = event; RawKeyEventDataAndroid rawKeyEventDataAndroid = rawKeyDownEvent.data; print(keyCode: ${rawKeyEventDataAndroid.keyCode}); switch (rawKeyEventDataAndroid.keyCode) { case 19: //KEY_UP // DefaultFocusTraversal.of(context).inDirection( // FocusScope.of(context).focusedChild, TraversalDirection.up); FocusScope.of(context) .focusInDirection(TraversalDirection.up); break; case 20: //KEY_DOWN FocusScope.of(context) .focusInDirection(TraversalDirection.down); break; case 21: //KEY_LEFT // FocusScope.of(context).requestFocus(focusNodeB0); FocusScope.of(context) .focusInDirection(TraversalDirection.left); // 手动指定下一个焦点 // FocusScope.of(context).requestFocus(focusNode); break; case 22: //KEY_RIGHT // FocusScope.of(context).requestFocus(focusNodeB1); FocusScope.of(context) .focusInDirection(TraversalDirection.right); // DefaultFocusTraversal.of(context) // .inDirection(_focusNode, TraversalDirection.right); // if(_focusNode.nextFocus){ // FocusScope.of(context) // .focusInDirection(TraversalDirection.right); // } break; case 23: //KEY_CENTER widget.onclick; break; case 66: //KEY_ENTER widget.onclick; break; default: break; } } }, child: Container( margin: EdgeInsets.all(8), decoration: decoration, child: widget.child, )); } } 好了,关于Flutter TV开发就讲解这么多。
泡沫经济时,北电在光传输上投入过猛,设备跌价不值钱,如同没有肉的鸡肋。
这是爆品的威力,也是对人性的理解。
不过,临床试验备案制的推行会激发临床试验机构开展科研的积极性,增加临床试验机构的数量,形成供大于求的市场格局,市场竞争进入效率周期。
原标题:消息称大地院线裁撤数十名中层 铅笔道9月23日讯,据毒眸报道,多名独立信源透露,票房排名国内院线第二的大地院线已经在近日完成了一批裁员工作,裁员名单中包括数十名城市经理和十余名大区负责人,而后大地总部方面也可能会进行一些人员调整。
李浩分析,快手带货的第一大品类,是个护洗护(美妆),第二大是食品和农产品。
即便是合作以后,对于很多谈过的条件是否能落地都是诸多的问号。
连日来,锡城的最高气温维持在35℃以上,午后走在户外有种要被“烤焦”的感觉。然而,在这阳光明媚的夏天走在曹张路时,不仅丝毫感觉不到阳光刺眼,还有一股淡淡的凉意扑面而来。从永丰路拐进曹张路往前走,只见两侧繁茂的枝干向路中央伸展,连接在一起,能明显感觉到这里的气温比其他地方要低3℃左右。沿途不时看见有人举起手机拍下几张照片。到了晚间,附近居民漫步在林阴道上,好不惬意!南长园林绿化工程公司养护科负责人李卫介绍,曹张路两旁一共种植了110棵法国梧桐,绿化覆盖率达到100%。这些法国梧桐的树龄基本在40年以上,胸径最大的达到了50厘米,可以说是无锡最“资深”的法国梧桐。
然而,根据每日经济新闻的报道,9月20日中信建投的一次电话会议纪要中,海底捞的店长收入模式被曝光,海底捞的资深店长月薪能达到十二万一个月,券商会议纪要显示,店长固定月薪约在35000元左右,通过培养徒弟店长来提成,店长通过徒弟店长提成的部分约占徒弟店净利润的3%以上。
台媒报道称,韩国瑜21日上午先是与台中市长卢秀燕再度上演秃子燕子合体,以行动支持下架蔡英文。
[矿产资源]市内矿产资源丰富,市境位于皖浙赣闽相邻区多金属成矿区,成矿地质条件优越,矿产资源十分丰富。已发现各类矿产79种,其中查明有资源储量的48种。矿产地500余处,已列入全省矿产资源储量表的184处,其中大型矿床25处,中型矿床43处,小型矿床116处。市内矿产资源具有三大特点:一是矿产种类多,资源丰富。特别是有色金属、贵金属、建材非金属等矿产储量丰富。二是矿产地分布相对集中,利于规模开发。空间分布上具有北富金、银、铜,南产铜、铅、锌、煤,东聚磷、滑石、膨润土、石灰岩,中藏铌和钽的资源分布格局。三是金属矿床中共伴生矿产多,综合利用价值高。已回收利用的有铜矿中的金、银、硫,铅锌矿中的银等。
大街网的运气比若邻网要好,坚持到了现在,并且获得了美图公司的3.95亿港元入股。
图 | 本届 EmTech China 全球新兴科技峰会五大议题 今天,我们将公布 EmTech China 全球新兴科技峰会 14 位已确认重磅演讲嘉宾的核心信息,并向所有人发出这封邀请函,邀请您进入我们的世界,与全球最强的科技大脑思想碰撞。