xiong 3 年之前
父節點
當前提交
dda358af53
共有 22 個文件被更改,包括 763 次插入0 次删除
  1. 二進制
      example/fonts/YouSheBiaoTiHei-2.ttf
  2. 41 0
      example/ios/Podfile
  3. 7 0
      lib/src/model/ability_selection_target_model.dart
  4. 189 0
      lib/src/page/comprehensive_evaluation_report/comprehensive_evaluation_report_page.dart
  5. 6 0
      lib/src/view/SideSelectionBar/i_side_selection_bar.dart
  6. 6 0
      lib/src/view/bulletf_rame/abstract/i_bulletf_rame.dart
  7. 5 0
      lib/src/view/bulletf_rame/abstract/i_bulletf_rame_color.dart
  8. 21 0
      lib/src/view/bulletf_rame/abstract/i_bulletf_rame_factory.dart
  9. 11 0
      lib/src/view/bulletf_rame/customer/customer_bulletf_rame.dart
  10. 10 0
      lib/src/view/bulletf_rame/customer/customer_verify_bulletf_rame_color.dart
  11. 20 0
      lib/src/view/bulletf_rame/customer/customer_verify_bulletf_rame_factory.dart
  12. 123 0
      lib/src/view/bulletf_rame/customer/customer_verify_bulletf_rame_view.dart
  13. 11 0
      lib/src/view/bulletf_rame/policy_support/policy_support_bulletf_rame.dart
  14. 9 0
      lib/src/view/bulletf_rame/policy_support/policy_support_bulletf_rame_color.dart
  15. 20 0
      lib/src/view/bulletf_rame/policy_support/policy_support_bulletf_rame_factory.dart
  16. 129 0
      lib/src/view/bulletf_rame/policy_support/policy_support_bulletf_rame_view.dart
  17. 6 0
      lib/src/view/bulletf_rame/verify/commit_verify_bulletf_rame_view.dart
  18. 6 0
      lib/src/view/bulletf_rame/verify/exit_verify_bulletf_rame_view.dart
  19. 17 0
      lib/src/view/bulletf_rame/verify/verify_bulletf_rame.dart
  20. 10 0
      lib/src/view/bulletf_rame/verify/verify_bulletf_rame_color.dart
  21. 24 0
      lib/src/view/bulletf_rame/verify/verify_bulletf_rame_factory.dart
  22. 92 0
      lib/src/view/bulletf_rame/verify/verify_bulletf_rame_view.dart

二進制
example/fonts/YouSheBiaoTiHei-2.ttf


+ 41 - 0
example/ios/Podfile

@@ -0,0 +1,41 @@
+# Uncomment this line to define a global platform for your project
+# platform :ios, '9.0'
+
+# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
+ENV['COCOAPODS_DISABLE_STATS'] = 'true'
+
+project 'Runner', {
+  'Debug' => :debug,
+  'Profile' => :release,
+  'Release' => :release,
+}
+
+def flutter_root
+  generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
+  unless File.exist?(generated_xcode_build_settings_path)
+    raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"
+  end
+
+  File.foreach(generated_xcode_build_settings_path) do |line|
+    matches = line.match(/FLUTTER_ROOT\=(.*)/)
+    return matches[1].strip if matches
+  end
+  raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get"
+end
+
+require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
+
+flutter_ios_podfile_setup
+
+target 'Runner' do
+  use_frameworks!
+  use_modular_headers!
+
+  flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
+end
+
+post_install do |installer|
+  installer.pods_project.targets.each do |target|
+    flutter_additional_ios_build_settings(target)
+  end
+end

+ 7 - 0
lib/src/model/ability_selection_target_model.dart

@@ -0,0 +1,7 @@
+//能力选择器目标接口
+mixin AbilitySelectionTargetModel{
+  String get getDomainAbilityName;
+  set setDomainAbilityName(String value);
+  bool get getIsSelected;
+  set setIsSelected(bool value);
+}

+ 189 - 0
lib/src/page/comprehensive_evaluation_report/comprehensive_evaluation_report_page.dart

@@ -0,0 +1,189 @@
+import 'package:flutter/material.dart';
+import 'dart:math' as math;
+import 'package:luojigou_thinking_core/src/view/student_info_list_view.dart';
+import 'package:luojigou_thinking_core/src/data/data_management.dart';
+
+// 综合评估报告&单次评估报告
+class ComprehensiveEvaluationReportPage extends StatelessWidget {
+  @override
+  Widget build(BuildContext context) {
+    return Scaffold(
+      body: MediaQuery.removePadding(
+        context: context,
+        removeTop: true,
+        child: Container(
+          decoration: BoxDecoration(
+              gradient: LinearGradient(
+            colors: [Color(0xFFBFD6FF), Color(0xFFFEFEFE)],
+            begin: Alignment.topLeft,
+            end: Alignment.bottomRight,
+            stops: [0, 0.5],
+          )),
+          child: Column(
+            children: [
+              AppNavBar(context),
+              SizedBox(height: 17),
+              HeaderView(context),
+              Expanded(
+                child: ContentList(),
+              ),
+              SizedBox(height: 58)
+            ],
+          ),
+        ),
+      ),
+    );
+  }
+
+  Container ContentList() {
+    return Container(
+      margin: EdgeInsets.symmetric(horizontal: 18),
+      padding: EdgeInsets.symmetric(horizontal: 15),
+      decoration: BoxDecoration(color: Color(0xFFFFFFFF), borderRadius: BorderRadius.circular(15), boxShadow: [BoxShadow(color: Color(0xB3BFD8FF), offset: Offset(0, 2), blurRadius: 20, spreadRadius: 0)]),
+      child: Column(
+        children: [
+          SizedBox(height: 18),
+          Row(
+            mainAxisAlignment: MainAxisAlignment.spaceBetween,
+            children: [
+              Row(
+                children: [
+                  Image.asset("assets/thinking_core/class_icon.png", width: 18, height: 18),
+                  SizedBox(width: 9.5),
+                  Text("逻辑狗中1班", style: TextStyle(fontSize: 18, height: 22 / 18, fontWeight: FontWeight.w600)),
+                ],
+              ),
+              Text("已评估(13人)", style: TextStyle(color: Color(0xFF666666), fontSize: 16, height: 22.5 / 18, fontWeight: FontWeight.w400))
+            ],
+          ),
+          SizedBox(height: 10),
+          SendToParentsWidget(),
+          Expanded(child: StudentInfoListView(accessoryViewType: AssessAccessoryViewType.Send)),
+        ],
+      ),
+    );
+  }
+
+  Container HeaderView(BuildContext context) {
+    return Container(
+      margin: EdgeInsets.symmetric(horizontal: 18),
+      width: MediaQuery.of(context).size.width,
+      height: (MediaQuery.of(context).size.width - 36) * 179 / 339,
+      child: Stack(
+        fit: StackFit.expand,
+        children: [
+          Image.asset(
+            "assets/thinking_core/comprehensive_evaluat_on_record.png",
+          ),
+          Column(
+            mainAxisAlignment: MainAxisAlignment.spaceBetween,
+            crossAxisAlignment: CrossAxisAlignment.start,
+            children: [
+              Column(
+                crossAxisAlignment: CrossAxisAlignment.start,
+                children: [
+                  SizedBox(height: 22 * (MediaQuery.of(context).size.width - 36) * 179 / 339 / 179),
+                  Padding(padding: EdgeInsets.only(left: 19), child: Text("思维芯游戏", style: TextStyle(color: Colors.white, fontSize: 21, height: 29.5 / 21, fontWeight: FontWeight.w600))),
+                  SizedBox(height: 7 * (MediaQuery.of(context).size.width - 36) * 179 / 339 / 179),
+                  Padding(padding: EdgeInsets.only(left: 19), child: Text("学期综合发展评估", style: TextStyle(color: Colors.white, fontSize: 21, height: 29.5 / 21, fontWeight: FontWeight.w600))),
+                ],
+              ),
+              Padding(padding: EdgeInsets.only(left: 19, bottom: 49 * (MediaQuery.of(context).size.width - 36) * 179 / 339 / 179), child: Text("生成时间:2021.2.3", style: TextStyle(color: Colors.white, fontSize: 11, height: 15 / 11, fontWeight: FontWeight.w500))),
+            ],
+          )
+        ],
+      ),
+    );
+  }
+
+  Container AppNavBar(BuildContext context) {
+    return Container(
+      width: MediaQuery.of(context).size.width,
+      height: MediaQuery.of(context).padding.top + 44,
+      alignment: Alignment.bottomLeft,
+      child: Row(
+        children: [
+          Container(
+              color: Colors.transparent,
+              padding: EdgeInsets.symmetric(horizontal: 18, vertical: 15),
+              child: Image.asset(
+                "assets/thinking_core/back.png",
+                width: 10.5,
+                height: 19,
+              )),
+          Expanded(
+              child: Text(
+            "综合评估记录",
+            textAlign: TextAlign.center,
+            style: TextStyle(color: Colors.black, fontSize: 18, height: 25 / 18, fontWeight: FontWeight.w600),
+          )),
+          Padding(
+            padding: EdgeInsets.symmetric(horizontal: 18, vertical: 15),
+            child: SizedBox(width: 10.5),
+          )
+        ],
+      ),
+    );
+  }
+}
+
+// 发送给家长
+class SendToParentsWidget extends StatelessWidget {
+  @override
+  Widget build(BuildContext context) {
+    return Container(
+      width: double.infinity,
+      height: 42,
+      padding: EdgeInsets.only(left: 10, right: 15),
+      decoration: BoxDecoration(
+        gradient: LinearGradient(colors: [Color(0xFFEBF1FF), Color(0xFFDCE6FF)]),
+        borderRadius: BorderRadius.circular(6),
+      ),
+      child: CustomPaint(
+        size: Size(36, 42),
+        painter: SendToParentsPainter(),
+        child: Row(
+          mainAxisAlignment: MainAxisAlignment.spaceBetween,
+          children: [
+            Text("有12份家园共育策略未发送给家长", style: TextStyle(color: Color(0xFF666666), fontSize: 12, height: 16.5 / 12, fontWeight: FontWeight.w400)),
+            GestureDetector(
+              child: Container(
+                width: 84,
+                height: 25,
+                alignment: Alignment.center,
+                decoration: BoxDecoration(
+                  color: Color(0xFF5F87F0),
+                  borderRadius: BorderRadius.circular(12.5),
+                ),
+                child: Text("发给家长", style: TextStyle(color: Color(0xFFFFFFFF), fontSize: 12, height: 16.5 / 12, fontWeight: FontWeight.w400)),
+              ),
+            )
+          ],
+        ),
+      ),
+    );
+  }
+}
+
+class SendToParentsPainter extends CustomPainter {
+  @override
+  void paint(Canvas canvas, Size size) {
+    final paint = Paint()
+      ..color = Colors.transparent
+      ..style = PaintingStyle.fill;
+    canvas.drawRRect(RRect.fromLTRBR(0, 0, size.width, size.height, Radius.circular(5)), paint);
+    final path = Path();
+    path.addRRect(RRect.fromRectAndRadius(Rect.fromLTWH(0, 0, 12, 12), Radius.circular(3)));
+    canvas.save();
+    canvas.translate(42, -8);
+    canvas.rotate(math.pi / 4);
+    canvas.drawPath(path, paint..color = Color(0xFFEBF1FF));
+    canvas.restore();
+  }
+
+  @override
+  bool shouldRepaint(covariant CustomPainter oldDelegate) {
+    // TODO: implement shouldRepaint
+    return true;
+  }
+}

+ 6 - 0
lib/src/view/SideSelectionBar/i_side_selection_bar.dart

@@ -0,0 +1,6 @@
+import 'package:luojigou_thinking_core/src/widget/widget.dart';
+import 'package:flutter/material.dart';
+
+mixin ISideSelectionBar {
+  Widget getSideSelectionBar();
+}

+ 6 - 0
lib/src/view/bulletf_rame/abstract/i_bulletf_rame.dart

@@ -0,0 +1,6 @@
+import 'package:flutter/cupertino.dart';
+import 'package:luojigou_thinking_core/src/data/data_management.dart';
+
+mixin IBulletfRame{
+  Widget createBulletfRame();
+}

+ 5 - 0
lib/src/view/bulletf_rame/abstract/i_bulletf_rame_color.dart

@@ -0,0 +1,5 @@
+import 'dart:ui';
+
+mixin IBulletfRameColor{
+  Color getBulletfRameBarrierColor();
+}

+ 21 - 0
lib/src/view/bulletf_rame/abstract/i_bulletf_rame_factory.dart

@@ -0,0 +1,21 @@
+import 'package:flutter/material.dart';
+import 'i_bulletf_rame_color.dart';
+import 'i_bulletf_rame.dart';
+
+mixin IBulletfRameFactory {
+  IBulletfRame getBulletfRame();
+  IBulletfRameColor getBulletfRameColor();
+}
+
+class ActivateRouter<T> extends PageRouteBuilder<T> {
+  final Widget page;
+  final Color color;
+
+  ActivateRouter(this.page, this.color)
+      : super(
+          opaque: false,
+          barrierColor: color,
+          pageBuilder: (context, animation, secondaryAnimation) => page,
+          transitionsBuilder: (context, animation, secondaryAnimation, child) => child,
+        );
+}

+ 11 - 0
lib/src/view/bulletf_rame/customer/customer_bulletf_rame.dart

@@ -0,0 +1,11 @@
+import 'package:flutter/src/widgets/framework.dart';
+import 'customer_verify_bulletf_rame_view.dart';
+import '../abstract/i_bulletf_rame.dart';
+
+class CustomerBulletfRame implements IBulletfRame {
+  @override
+  Widget createBulletfRame() {
+    // TODO: implement createBulletfRame
+    return CustomerBulletfRameView();
+  }
+}

+ 10 - 0
lib/src/view/bulletf_rame/customer/customer_verify_bulletf_rame_color.dart

@@ -0,0 +1,10 @@
+import 'dart:ui';
+import '../abstract/i_bulletf_rame_color.dart';
+
+class CustomerBulletfRameColor implements IBulletfRameColor{
+  @override
+  Color getBulletfRameBarrierColor() {
+    // TODO: implement getBulletfRameBarrierColor
+    return Color(0xB3000000);
+  }
+}

+ 20 - 0
lib/src/view/bulletf_rame/customer/customer_verify_bulletf_rame_factory.dart

@@ -0,0 +1,20 @@
+import 'package:luojigou_thinking_core/src/data/data_management.dart';
+import '../abstract/i_bulletf_rame_factory.dart';
+import '../abstract/i_bulletf_rame.dart';
+import '../abstract/i_bulletf_rame_color.dart';
+import 'customer_bulletf_rame.dart';
+import 'customer_verify_bulletf_rame_color.dart';
+
+class CustomerBulletfRameFactory implements IBulletfRameFactory{
+  @override
+  IBulletfRame getBulletfRame() {
+    // TODO: implement getBulletfRame
+    return CustomerBulletfRame();
+  }
+
+  @override
+  IBulletfRameColor getBulletfRameColor() {
+    // TODO: implement getBulletfRameColor
+    return CustomerBulletfRameColor();
+  }
+}

+ 123 - 0
lib/src/view/bulletf_rame/customer/customer_verify_bulletf_rame_view.dart

@@ -0,0 +1,123 @@
+import 'package:flutter/material.dart';
+
+/// 客服弹框
+class CustomerBulletfRameView extends StatelessWidget {
+  @override
+  Widget build(BuildContext context) {
+    return Center(
+      child: Material(
+          color: Colors.transparent,
+          child: Stack(
+            children: <Widget>[
+              GestureDetector(
+                onTap: () {
+                  Navigator.pop(context);
+                },
+              ),
+              _activateWindow(context)
+            ],
+          )),
+    );
+  }
+
+  Widget _activateWindow(BuildContext context) {
+    return Center(
+      child: SizedBox(
+        width: MediaQuery.of(context).size.width - 36,
+        child: Container(
+          width: double.infinity,
+          decoration: BoxDecoration(
+            borderRadius: BorderRadius.circular(12),
+            gradient: LinearGradient(colors: [Color(0xFFB0C9FF), Color(0xFFFFFFFF)], begin: Alignment(0, -0.9), end: Alignment(0, -0.01)),
+          ),
+          child: Stack(
+            alignment: Alignment.center,
+            children: [
+              Column(
+                mainAxisSize: MainAxisSize.min,
+                crossAxisAlignment: CrossAxisAlignment.center,
+                children: [
+                  Image.asset("assets/thinking_core/customer_dog.png", width: 132, height: 126),
+                  SizedBox(height: 18),
+                  Text("您还未开通思维芯游戏测评", style: TextStyle(fontSize: 14, height: 20 / 14, color: Color(0xFF666666))),
+                  SizedBox(height: 6),
+                  Text.rich(TextSpan(children: [
+                    TextSpan(
+                      text: "请联系工作人员:",
+                      // textAlign: TextAlign.center,
+                      style: TextStyle(fontSize: 14, fontWeight: FontWeight.w400, color: Color(0xFF666666), height: 23.5 / 14),
+                    ),
+                    WidgetSpan(
+                        child: GestureDetector(
+                          onTap: () {
+                            // launch("tel://+8617800151521");
+                          },
+                          child: Text(
+                            "010-59626411",
+                            style: TextStyle(fontSize: 14, height: 23.5 / 14, color: Color(0xFF5F87F0), fontWeight: FontWeight.w600),
+                          ),
+                        ))
+                  ])),
+                  SizedBox(height: 6),
+                  Text("或联系在线客服(请备注:发展评估)", style: TextStyle(fontSize: 14, height: 20 / 14, color: Color(0xFF666666))),
+                  SizedBox(height: 28),
+                  GestureDetector(
+                    onTap: () async {
+                      // bool install = await LJGWeiXinShareHelper.isInstalled();
+                      // if (!install) {
+                      //   LJGToastHelper.showText("请您安装微信");
+                      //   return;
+                      // }
+                      // launchWeChatMiniProgram(username: 'gh_fbe5ebf0c69e', path: '/pages/contact/index', miniProgramType: WXMiniProgramType.RELEASE);
+                    },
+                    child: Container(
+                      width: 171,
+                      height: 40,
+                      decoration: BoxDecoration(color: Color(0xFF5F87F0), borderRadius: BorderRadius.circular(20)),
+                      child: Row(
+                        mainAxisAlignment: MainAxisAlignment.spaceBetween,
+                        children: [
+                          SizedBox(width: 23),
+                          Image.asset(
+                            "assets/thinking_core/customer_wechat.png",
+                            width: 23,
+                            height: 18.5,
+                          ),
+                          SizedBox(width: 6),
+                          Text(
+                            "在线客服获取",
+                            style: TextStyle(fontSize: 16, height: 22.5 / 16, color: Color(0xFFFFFFFF), fontWeight: FontWeight.w500),
+                          ),
+                          SizedBox(width: 23)
+                        ],
+                      ),
+                    ),
+                  ),
+                  SizedBox(height: 30),
+                ],
+              ),
+              Positioned(
+                right: 0,
+                top: 0,
+                child: GestureDetector(
+                  onTap: () {
+                    Navigator.pop(context);
+                  },
+                  child: Container(
+                    padding: EdgeInsets.symmetric(horizontal: 20, vertical: 28),
+                    color: Colors.transparent,
+                    child: Image.asset(
+                      'assets/thinking_core/close_white.png',
+                      width: 13,
+                      height: 13,
+                    ),
+                  ),
+                ),
+              ),
+            ],
+          ),
+        ),
+      ),
+    );
+  }
+}

+ 11 - 0
lib/src/view/bulletf_rame/policy_support/policy_support_bulletf_rame.dart

@@ -0,0 +1,11 @@
+import 'package:flutter/src/widgets/framework.dart';
+import 'policy_support_bulletf_rame_view.dart';
+import '../abstract/i_bulletf_rame.dart';
+
+class PolicySupportBulletfRame implements IBulletfRame {
+  @override
+  Widget createBulletfRame() {
+    // TODO: implement createBulletfRame
+    return PolicySupportBulletfRameView();
+  }
+}

+ 9 - 0
lib/src/view/bulletf_rame/policy_support/policy_support_bulletf_rame_color.dart

@@ -0,0 +1,9 @@
+import 'dart:ui';
+import '../abstract/i_bulletf_rame_color.dart';
+class PolicySupportBulletfRameColor implements IBulletfRameColor{
+  @override
+  Color getBulletfRameBarrierColor() {
+    // TODO: implement getBulletfRameBarrierColor
+    return Color(0xCC000000);
+  }
+}

+ 20 - 0
lib/src/view/bulletf_rame/policy_support/policy_support_bulletf_rame_factory.dart

@@ -0,0 +1,20 @@
+import '../abstract/i_bulletf_rame_factory.dart';
+import '../abstract/i_bulletf_rame.dart';
+import '../abstract/i_bulletf_rame_color.dart';
+import 'policy_support_bulletf_rame.dart';
+import 'policy_support_bulletf_rame_color.dart';
+
+class PolicySupportBulletfRameFactory implements IBulletfRameFactory{
+  @override
+  IBulletfRame getBulletfRame() {
+    // TODO: implement getBulletfRame
+    return PolicySupportBulletfRame();
+  }
+
+  @override
+  IBulletfRameColor getBulletfRameColor() {
+    // TODO: implement getBulletfRameColor
+    return PolicySupportBulletfRameColor();
+  }
+
+}

+ 129 - 0
lib/src/view/bulletf_rame/policy_support/policy_support_bulletf_rame_view.dart

@@ -0,0 +1,129 @@
+import 'package:flutter/material.dart';
+
+///策略支持弹框
+class PolicySupportBulletfRameView extends StatelessWidget {
+  @override
+  Widget build(BuildContext context) {
+    return Center(
+      child: Material(
+          color: Colors.transparent,
+          child: Stack(
+            children: <Widget>[
+              GestureDetector(
+                onTap: () {
+                  Navigator.pop(context);
+                },
+              ),
+              _activateWindow(context)
+            ],
+          )),
+    );
+  }
+
+  Widget _activateWindow(BuildContext context) {
+    return Center(
+      child: SizedBox(
+        width: MediaQuery.of(context).size.width - 36,
+        child: Container(
+          width: double.infinity,
+          decoration: BoxDecoration(
+            borderRadius: BorderRadius.circular(12),
+          ),
+          child: Stack(
+            alignment: Alignment.topCenter,
+            children: [
+              Image.asset("assets/thinking_core/strategy_bg.png"),
+              Positioned(top: 27, left: 0, right: 0, child: Image.asset("assets/thinking_core/policy_support.png")),
+              Positioned(
+                top: 109,
+                bottom: 35,
+                left: 22,
+                right: 22,
+                child: Column(
+                  children: [
+                    Padding(
+                      padding: EdgeInsets.only(left: 5, right: 10),
+                      child: Row(
+                        mainAxisAlignment: MainAxisAlignment.spaceBetween,
+                        children: [
+                          Text("模式发展能力-反应程度", style: TextStyle(fontSize: 16, height: 22 / 16, color: Colors.white, fontWeight: FontWeight.w500)),
+                          Image.asset("assets/thinking_core/dog.png", width: 60, height: 50),
+                        ],
+                      ),
+                    ),
+                    Expanded(
+                      child: Container(
+                        decoration: BoxDecoration(color: Color(0xFFEBF0FE), borderRadius: BorderRadius.circular(20)),
+                        child: Column(
+                          children: [
+                            Container(
+                              height: 43,
+                              alignment: Alignment.center,
+                              child: Text("早期", style: TextStyle(fontSize: 16, height: 22 / 16, color: Color(0xFF4D66FF), fontWeight: FontWeight.w600)),
+                            ),
+                            Expanded(
+                                child: Container(
+                                  decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(20)),
+                                  child: ContentListView(),
+                                ))
+                          ],
+                        ),
+                      ),
+                    ),
+                    SizedBox(height: 20),
+                    GestureDetector(
+                      onTap: (){
+                        Navigator.pop(context);
+                      },
+                      child: Container(
+                        width: 153,
+                        height: 42,
+                        alignment: Alignment.center,
+                        decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(21)),
+                        child: Text("知道啦", style: TextStyle(fontSize: 16, height: 18 / 16, color: Color(0xFF5F87F0), fontWeight: FontWeight.w500)),
+                      ),
+                    )
+                  ],
+                ),
+              )
+            ],
+          ),
+        ),
+      ),
+    );
+  }
+}
+
+class ContentListView extends StatelessWidget {
+  @override
+  Widget build(BuildContext context) {
+    return ListView.separated(
+        itemBuilder: (_, index) {
+          return Container(
+            margin: EdgeInsets.symmetric(horizontal: 13),
+            child: Column(
+              children: [
+                Row(
+                  children: [
+                    SizedBox(width: 3),
+                    Container(
+                      width: 4,
+                      height: 4,
+                      decoration: BoxDecoration(color: Color(0xFF4D66FF), borderRadius: BorderRadius.circular(2)),
+                    ),
+                    SizedBox(width: 6),
+                    Text("一日活动支持", style: TextStyle(fontSize: 14, height: 24 / 14, color: Color(0xFF4D66FF), fontFamily: "YouSheBiaoTiHei")),
+                  ],
+                ),
+                SizedBox(height: 1),
+                Padding(padding: EdgeInsets.only(left: 13), child: Text("提供机会让幼儿注意和描述自然界的模式(岩石、天空、树叶或贝壳的模式", style: TextStyle(fontSize: 12, height: 21 / 12, color: Color(0xFF333333)))),
+              ],
+            ),
+          );
+        },
+        separatorBuilder: (_, index) {
+          return SizedBox(height: 20);
+        },
+        itemCount: 9);
+  }
+}

+ 6 - 0
lib/src/view/bulletf_rame/verify/commit_verify_bulletf_rame_view.dart

@@ -0,0 +1,6 @@
+import 'verify_bulletf_rame_view.dart';
+
+/// 提交确认弹框
+class CommitVerifyBulletfRameView extends VerifyBulletfRameView {
+  const CommitVerifyBulletfRameView() : super(title: " 确认提交?", content: "提交后不支持修改");
+}

+ 6 - 0
lib/src/view/bulletf_rame/verify/exit_verify_bulletf_rame_view.dart

@@ -0,0 +1,6 @@
+import 'verify_bulletf_rame_view.dart';
+
+/// 退出确认弹框
+class ExitVerifyBulletfRameView extends VerifyBulletfRameView {
+  const ExitVerifyBulletfRameView() : super(title: " 确认要退出记录?", content: "退出后本次记录会自动保存");
+}

+ 17 - 0
lib/src/view/bulletf_rame/verify/verify_bulletf_rame.dart

@@ -0,0 +1,17 @@
+import 'package:flutter/src/widgets/framework.dart';
+import 'package:luojigou_thinking_core/src/data/data_management.dart';
+import '../abstract/i_bulletf_rame.dart';
+import 'commit_verify_bulletf_rame_view.dart';
+import 'exit_verify_bulletf_rame_view.dart';
+
+class VerifyBulletfRame implements IBulletfRame {
+  final VerifyType verifyType;
+
+  VerifyBulletfRame(this.verifyType);
+
+  @override
+  Widget createBulletfRame() {
+    // TODO: implement createBulletfRame
+    return verifyType == VerifyType.Commit ? CommitVerifyBulletfRameView() : ExitVerifyBulletfRameView();
+  }
+}

+ 10 - 0
lib/src/view/bulletf_rame/verify/verify_bulletf_rame_color.dart

@@ -0,0 +1,10 @@
+import 'dart:ui';
+import '../abstract/i_bulletf_rame_color.dart';
+
+class VerifyBulletfRameColor implements IBulletfRameColor{
+  @override
+  Color getBulletfRameBarrierColor() {
+    // TODO: implement getBulletfRameBarrierColor
+    return Color(0xCC000000);
+  }
+}

+ 24 - 0
lib/src/view/bulletf_rame/verify/verify_bulletf_rame_factory.dart

@@ -0,0 +1,24 @@
+import 'package:luojigou_thinking_core/src/data/data_management.dart';
+import '../abstract/i_bulletf_rame_factory.dart';
+import '../abstract/i_bulletf_rame.dart';
+import '../abstract/i_bulletf_rame_color.dart';
+import 'verify_bulletf_rame_color.dart';
+import 'verify_bulletf_rame.dart';
+
+class VerifyBulletfRameFactory implements IBulletfRameFactory{
+  final VerifyType verifyType;
+  VerifyBulletfRameFactory(this.verifyType);
+
+  @override
+  IBulletfRame getBulletfRame() {
+    // TODO: implement getBulletfRame
+    return VerifyBulletfRame(verifyType);
+  }
+
+  @override
+  IBulletfRameColor getBulletfRameColor() {
+    // TODO: implement getBulletfRameColor
+    return VerifyBulletfRameColor();
+  }
+
+}

+ 92 - 0
lib/src/view/bulletf_rame/verify/verify_bulletf_rame_view.dart

@@ -0,0 +1,92 @@
+import 'package:flutter/material.dart';
+
+/// 确认弹框
+abstract class VerifyBulletfRameView extends StatelessWidget {
+  final String title;
+  final String content;
+
+  const VerifyBulletfRameView({Key? key, required this.title, required this.content}) : super(key: key);
+
+  @override
+  Widget build(BuildContext context) {
+    return Center(
+      child: Material(
+          color: Colors.transparent,
+          child: Stack(
+            children: <Widget>[
+              GestureDetector(
+                onTap: () {
+                  Navigator.pop(context);
+                },
+              ),
+              _activateWindow(context)
+            ],
+          )),
+    );
+  }
+
+  Widget _activateWindow(BuildContext context) {
+    return Center(
+      child: SizedBox(
+        width: MediaQuery.of(context).size.width - 80,
+        child: Container(
+          width: double.infinity,
+          decoration: BoxDecoration(
+            color: Colors.white,
+            borderRadius: BorderRadius.circular(20),
+          ),
+          child: Column(
+            mainAxisSize: MainAxisSize.min,
+            crossAxisAlignment: CrossAxisAlignment.center,
+            children: [
+              SizedBox(height: 30),
+              Text(title, textAlign: TextAlign.center, style: TextStyle(fontSize: 18, height: 1, color: Color(0xFF333333), fontWeight: FontWeight.w500)),
+              SizedBox(height: 14),
+              Text(content, textAlign: TextAlign.center, style: TextStyle(fontSize: 18, height: 1, color: Color(0xFF333333), fontWeight: FontWeight.w500)),
+              SizedBox(height: 33),
+              Padding(
+                padding: EdgeInsets.symmetric(horizontal: 29),
+                child: Row(
+                  mainAxisAlignment: MainAxisAlignment.spaceBetween,
+                  children: [
+                    GestureDetector(
+                      onTap: () async {
+                        Navigator.pop(context);
+                      },
+                      child: Container(
+                        width: 113,
+                        height: 42,
+                        alignment: Alignment.center,
+                        decoration: BoxDecoration(borderRadius: BorderRadius.circular(20), border: Border.all(color: Color(0x99999999), width: 1)),
+                        child: Text(
+                          "取消",
+                          style: TextStyle(fontSize: 16, height: 18 / 16, color: Color(0xFF666666), fontWeight: FontWeight.w500),
+                        ),
+                      ),
+                    ),
+                    GestureDetector(
+                      onTap: () async {
+                        Navigator.of(context)..pop()..pop();
+                      },
+                      child: Container(
+                        width: 113,
+                        height: 42,
+                        alignment: Alignment.center,
+                        decoration: BoxDecoration(color: Color(0xFF5F87F0), borderRadius: BorderRadius.circular(20)),
+                        child: Text(
+                          "确认",
+                          style: TextStyle(fontSize: 16, height: 18 / 16, color: Color(0xFFFFFFFF), fontWeight: FontWeight.w500),
+                        ),
+                      ),
+                    )
+                  ],
+                ),
+              ),
+              SizedBox(height: 20),
+            ],
+          ),
+        ),
+      ),
+    );
+  }
+}