| @@ -0,0 +1,230 @@ | |||
| import 'package:flutter/cupertino.dart'; | |||
| import 'package:flutter/material.dart'; | |||
| import 'package:zhiying_base_widget/pages/goods_share_page/goods_share_editor/goods_share_preview.dart'; | |||
| import 'package:zhiying_comm/zhiying_comm.dart'; | |||
| class GoodsShareEditor extends StatefulWidget { | |||
| @override | |||
| _GoodsShareEditorState createState() => _GoodsShareEditorState(); | |||
| } | |||
| class _GoodsShareEditorState extends State<GoodsShareEditor> { | |||
| TextEditingController _controller; | |||
| @override | |||
| void initState() { | |||
| _controller = TextEditingController( | |||
| text: | |||
| '{标题}\n原价】{原价}元\n【券后价】{券后价}元\n【用嗨如意再省】{补贴省}元\n -------------\n 復製{淘口令},\n 用【Tao·寳】下单\n -------------\n 【商品链接】\n {商品链接}'); | |||
| super.initState(); | |||
| } | |||
| @override | |||
| Widget build(BuildContext context) { | |||
| return Scaffold( | |||
| appBar: _createNav(), | |||
| body: GestureDetector( | |||
| onTap: () { | |||
| FocusScope.of(context).requestFocus(FocusNode()); | |||
| }, | |||
| child: SingleChildScrollView( | |||
| child: Column( | |||
| children: <Widget>[ | |||
| _createCommission(), | |||
| _createInput(), | |||
| _createDesc(), | |||
| _createBottom(), | |||
| ], | |||
| ), | |||
| ), | |||
| ), | |||
| ); | |||
| } | |||
| // 导航栏 | |||
| Widget _createNav() { | |||
| return CupertinoNavigationBar( | |||
| border: Border( | |||
| bottom: BorderSide( | |||
| width: 0.0, // One physical pixel. | |||
| style: BorderStyle.none, | |||
| ), | |||
| ), | |||
| // backgroundColor: HexColor.fromHex('#ffffff'), | |||
| leading: Navigator.canPop(context) | |||
| ? GestureDetector( | |||
| child: Container( | |||
| padding: EdgeInsets.zero, | |||
| child: Icon( | |||
| Icons.arrow_back_ios, | |||
| size: 20, | |||
| ), | |||
| ), | |||
| onTap: () { | |||
| if (Navigator.canPop(context)) { | |||
| Navigator.pop(context); | |||
| } | |||
| }, | |||
| ) | |||
| : Container(), | |||
| middle: Text( | |||
| '编辑模版', | |||
| style: TextStyle( | |||
| fontSize: 15, | |||
| color: HexColor.fromHex('#333333'), | |||
| ), | |||
| ), | |||
| ); | |||
| } | |||
| Widget _createCommission() { | |||
| return Container( | |||
| margin: EdgeInsets.only(left: 12.5, right: 12.5, top: 4, bottom: 4), | |||
| padding: EdgeInsets.only(left: 10, right: 10), | |||
| width: double.infinity, | |||
| height: 32, | |||
| decoration: BoxDecoration( | |||
| color: Colors.white, borderRadius: BorderRadius.circular(8)), | |||
| child: Row( | |||
| crossAxisAlignment: CrossAxisAlignment.center, | |||
| children: <Widget>[ | |||
| Container( | |||
| width: 20, | |||
| height: 20, | |||
| margin: EdgeInsets.only(right: 10), | |||
| decoration: BoxDecoration( | |||
| color: Colors.redAccent, | |||
| borderRadius: BorderRadius.circular(10)), | |||
| ), | |||
| Text( | |||
| '请不要修改 {} 之间的文字避免无法使用', | |||
| style: TextStyle( | |||
| fontSize: 13, | |||
| fontWeight: FontWeight.bold, | |||
| color: Color(0xff333333)), | |||
| ), | |||
| ], | |||
| ), | |||
| ); | |||
| } | |||
| Widget _createBottom() { | |||
| return SafeArea( | |||
| child: Container( | |||
| margin: EdgeInsets.only(left: 12.5, right: 12.5, top: 4, bottom: 4), | |||
| child: Row( | |||
| children: <Widget>[ | |||
| Expanded( | |||
| child: Container( | |||
| height: 36, | |||
| decoration: BoxDecoration( | |||
| color: Colors.red, | |||
| borderRadius: BorderRadius.circular(18), | |||
| ), | |||
| child: Center( | |||
| child: Text( | |||
| '恢复默认', | |||
| style: TextStyle(color: Colors.white), | |||
| ), | |||
| ), | |||
| ), | |||
| ), | |||
| Expanded( | |||
| child: Container( | |||
| margin: EdgeInsets.only(left: 5), | |||
| height: 36, | |||
| decoration: BoxDecoration( | |||
| color: Colors.orangeAccent, | |||
| borderRadius: BorderRadius.circular(18), | |||
| ), | |||
| child: Center( | |||
| child: Text( | |||
| '保存模板', | |||
| style: TextStyle(color: Colors.white), | |||
| ), | |||
| ), | |||
| ), | |||
| ), | |||
| Expanded( | |||
| child: GestureDetector( | |||
| child: Container( | |||
| margin: EdgeInsets.only(left: 5), | |||
| height: 36, | |||
| decoration: BoxDecoration( | |||
| color: Colors.amber, | |||
| borderRadius: BorderRadius.circular(18), | |||
| ), | |||
| child: Center( | |||
| child: Text( | |||
| '预览模板', | |||
| style: TextStyle(color: Colors.white), | |||
| ), | |||
| ), | |||
| ), | |||
| onTap: () { | |||
| _showPreview(); | |||
| }, | |||
| ), | |||
| ), | |||
| ], | |||
| ), | |||
| ), | |||
| ); | |||
| } | |||
| Widget _createInput() { | |||
| return Container( | |||
| width: double.infinity, | |||
| margin: EdgeInsets.all(12), | |||
| padding: EdgeInsets.all(10), | |||
| height: 180, | |||
| decoration: BoxDecoration( | |||
| color: Colors.white, borderRadius: BorderRadius.circular(8)), | |||
| child: CupertinoTextField( | |||
| controller: _controller, | |||
| decoration: BoxDecoration(), | |||
| keyboardType: TextInputType.multiline, | |||
| style: TextStyle( | |||
| fontSize: 12, | |||
| fontWeight: FontWeight.bold, | |||
| color: Color(0xff333333), | |||
| ), | |||
| maxLines: null, | |||
| ), | |||
| ); | |||
| } | |||
| Widget _createDesc() { | |||
| return Container( | |||
| width: double.infinity, | |||
| margin: EdgeInsets.all(12), | |||
| decoration: BoxDecoration( | |||
| color: Colors.white, borderRadius: BorderRadius.circular(8)), | |||
| child: Column( | |||
| crossAxisAlignment: CrossAxisAlignment.start, | |||
| children: <Widget>[ | |||
| Container( | |||
| margin: EdgeInsets.only(top: 10), | |||
| width: 70, | |||
| height: 30, | |||
| color: Colors.redAccent, | |||
| ), | |||
| Padding( | |||
| padding: EdgeInsets.all(10), | |||
| child: Text( | |||
| '1.{标题} 表示商品标题\n2.{商品原价} 表示在售价格\n3.{券后价} 表示券后价格\n4.{补贴省} 表示平台补贴\n5.{推荐理由} 表示商品的推荐词,可为空\n6.{淘口令} 表示商品下单的口令\n7.{商品链接} 表示商品的链接', | |||
| style: TextStyle(fontSize: 12, color: Color(0xff999999)), | |||
| ), | |||
| ) | |||
| ], | |||
| ), | |||
| ); | |||
| } | |||
| void _showPreview() { | |||
| showCupertinoModalPopup( | |||
| context: context, | |||
| builder: (context) => GoodsSharePreview(), | |||
| ); | |||
| } | |||
| } | |||
| @@ -0,0 +1,102 @@ | |||
| import 'dart:ui'; | |||
| import 'package:flutter/material.dart'; | |||
| import 'package:zhiying_base_widget/pages/goods_share_page/widgets/goods_share_edit.dart'; | |||
| import 'package:zhiying_base_widget/pages/goods_share_page/widgets/goods_share_item.dart'; | |||
| class GoodsSharePreview extends StatefulWidget { | |||
| @override | |||
| _GoodsSharePreviewState createState() => _GoodsSharePreviewState(); | |||
| } | |||
| class _GoodsSharePreviewState extends State<GoodsSharePreview> { | |||
| @override | |||
| Widget build(BuildContext context) { | |||
| return GestureDetector( | |||
| onTap: () { | |||
| Navigator.pop(context); | |||
| }, | |||
| child: Scaffold( | |||
| backgroundColor: Colors.transparent, | |||
| body: BackdropFilter( | |||
| filter: ImageFilter.blur(sigmaX: 5, sigmaY: 5), | |||
| child: Column( | |||
| children: <Widget>[ | |||
| Expanded( | |||
| child: Container(), | |||
| ), | |||
| Container( | |||
| width: double.infinity, | |||
| padding: EdgeInsets.only(left: 12.5, right: 12.5, top: 15), | |||
| decoration: BoxDecoration( | |||
| color: Colors.white, | |||
| borderRadius: BorderRadius.circular(13), | |||
| ), | |||
| child: SafeArea( | |||
| top: false, | |||
| child: Column( | |||
| children: <Widget>[ | |||
| Padding( | |||
| padding: const EdgeInsets.only(bottom: 8.0), | |||
| child: Text( | |||
| '预览模版', | |||
| style: TextStyle( | |||
| fontSize: 16, | |||
| fontWeight: FontWeight.bold, | |||
| ), | |||
| ), | |||
| ), | |||
| GoodsShareItem( | |||
| child: GoodsShareEdit( | |||
| '至高减600【24期免息】xiaomi/小米10Pro 5G手机骁龙865智能游戏拍照手机官方旗舰店小米10青春正品k305g现货\n\n原价】3999元\n券后价】3989元\n【用智莺生活再省】19.74元\n-------------\n復製(FRH51Lu9hYF),\n用【Tao·寳】下单\n-------------\n商品链接】\nhttp://hsrj3.cn/ps/FRH51Lu9hYF.html)\n', | |||
| ), | |||
| ), | |||
| Padding( | |||
| padding: const EdgeInsets.only(top: 8), | |||
| child: Row( | |||
| mainAxisAlignment: MainAxisAlignment.center, | |||
| children: <Widget>[ | |||
| Container( | |||
| margin: EdgeInsets.only(left: 5), | |||
| width: 110, | |||
| height: 36, | |||
| decoration: BoxDecoration( | |||
| color: Colors.orangeAccent, | |||
| borderRadius: BorderRadius.circular(18), | |||
| ), | |||
| child: Center( | |||
| child: Text( | |||
| '返回编辑', | |||
| style: TextStyle(color: Colors.white), | |||
| ), | |||
| ), | |||
| ), | |||
| Container( | |||
| margin: EdgeInsets.only(left: 40), | |||
| width: 110, | |||
| height: 36, | |||
| decoration: BoxDecoration( | |||
| color: Colors.orangeAccent, | |||
| borderRadius: BorderRadius.circular(18), | |||
| ), | |||
| child: Center( | |||
| child: Text( | |||
| '保存模板', | |||
| style: TextStyle(color: Colors.white), | |||
| ), | |||
| ), | |||
| ), | |||
| ], | |||
| ), | |||
| ), | |||
| ], | |||
| ), | |||
| ), | |||
| ), | |||
| ], | |||
| ), | |||
| ), | |||
| ), | |||
| ); | |||
| } | |||
| } | |||
| @@ -1,4 +1,6 @@ | |||
| import 'package:flutter/material.dart'; | |||
| import 'package:fluttertoast/fluttertoast.dart'; | |||
| import 'package:zhiying_base_widget/pages/goods_share_page/goods_share_editor/goods_share_editor.dart'; | |||
| import 'package:zhiying_base_widget/pages/goods_share_page/widgets/good_share_msg.dart'; | |||
| import 'package:zhiying_base_widget/pages/goods_share_page/widgets/goods_share_edit.dart'; | |||
| import 'package:zhiying_base_widget/pages/goods_share_page/widgets/goods_share_item.dart'; | |||
| @@ -20,7 +22,17 @@ class _GoodsShareImageState extends State<GoodsShareImage> { | |||
| children: <Widget>[ | |||
| GoodsShareItem( | |||
| child: GoodsShareEdit( | |||
| '至高减600【24期免息】xiaomi/小米10Pro 5G手机骁龙865智能游戏拍照手机官方旗舰店小米10青春正品k305g现货\n\n原价】3999元\n券后价】3989元\n【用智莺生活再省】19.74元\n-------------\n復製(FRH51Lu9hYF),\n用【Tao·寳】下单\n-------------\n商品链接】\nhttp://hsrj3.cn/ps/FRH51Lu9hYF.html)\n'), | |||
| '至高减600【24期免息】xiaomi/小米10Pro 5G手机骁龙865智能游戏拍照手机官方旗舰店小米10青春正品k305g现货\n\n原价】3999元\n券后价】3989元\n【用智莺生活再省】19.74元\n-------------\n復製(FRH51Lu9hYF),\n用【Tao·寳】下单\n-------------\n商品链接】\nhttp://hsrj3.cn/ps/FRH51Lu9hYF.html)\n', | |||
| onCopyClick: () { | |||
| Fluttertoast.showToast(msg: '复制成功'); | |||
| }, | |||
| onEditorClick: () { | |||
| Navigator.push( | |||
| context, | |||
| MaterialPageRoute( | |||
| builder: (context) => GoodsShareEditor())); | |||
| }, | |||
| ), | |||
| ), | |||
| GoodsShareItem( | |||
| child: GoodsShareMessage('点击编辑模板可以自定义分享文案哦😄😄'), | |||
| @@ -2,8 +2,12 @@ import 'package:flutter/material.dart'; | |||
| class GoodsShareEdit extends StatelessWidget { | |||
| final String message; | |||
| final VoidCallback onEditorClick; | |||
| final VoidCallback onCopyClick; | |||
| const GoodsShareEdit(this.message, {Key key}) : super(key: key); | |||
| const GoodsShareEdit(this.message, | |||
| {Key key, this.onEditorClick, this.onCopyClick}) | |||
| : super(key: key); | |||
| @override | |||
| Widget build(BuildContext context) { | |||
| @@ -62,9 +66,15 @@ class GoodsShareEdit extends StatelessWidget { | |||
| child: Row( | |||
| children: <Widget>[ | |||
| Expanded( | |||
| child: GoodsShareCheckButton( | |||
| '编辑模版', | |||
| isSelected: true, | |||
| child: GestureDetector( | |||
| child: Container( | |||
| color: Colors.transparent, | |||
| child: GoodsShareCheckButton( | |||
| '编辑模版', | |||
| isSelected: true, | |||
| ), | |||
| ), | |||
| onTap: onEditorClick, | |||
| ), | |||
| ), | |||
| Container( | |||
| @@ -73,9 +83,15 @@ class GoodsShareEdit extends StatelessWidget { | |||
| color: Color(0xffececec), | |||
| ), | |||
| Expanded( | |||
| child: GoodsShareCheckButton( | |||
| '复制文案', | |||
| isSelected: false, | |||
| child: GestureDetector( | |||
| child: Container( | |||
| color: Colors.transparent, | |||
| child: GoodsShareCheckButton( | |||
| '复制文案', | |||
| isSelected: false, | |||
| ), | |||
| ), | |||
| onTap: onCopyClick, | |||
| ), | |||
| ), | |||
| ], | |||
| @@ -125,7 +125,10 @@ class _ShareAlertContent extends StatelessWidget { | |||
| padding: const EdgeInsets.only(top: 2, bottom: 2), | |||
| child: Text( | |||
| '分享平台', | |||
| style: TextStyle(fontSize: 12, color: Color(0xff333333)), | |||
| style: TextStyle( | |||
| fontSize: 12, | |||
| color: Color(0xff333333), | |||
| fontWeight: FontWeight.bold), | |||
| ), | |||
| ), | |||
| ], | |||