diff --git a/qiita_app/.metadata b/qiita_app/.metadata deleted file mode 100644 index 19d7837..0000000 --- a/qiita_app/.metadata +++ /dev/null @@ -1,45 +0,0 @@ -# This file tracks properties of this Flutter project. -# Used by Flutter tool to assess capabilities and perform upgrades etc. -# -# This file should be version controlled. - -version: - revision: 7048ed95a5ad3e43d697e0c397464193991fc230 - channel: stable - -project_type: app - -# Tracks metadata for the flutter migrate command -migration: - platforms: - - platform: root - create_revision: 7048ed95a5ad3e43d697e0c397464193991fc230 - base_revision: 7048ed95a5ad3e43d697e0c397464193991fc230 - - platform: android - create_revision: 7048ed95a5ad3e43d697e0c397464193991fc230 - base_revision: 7048ed95a5ad3e43d697e0c397464193991fc230 - - platform: ios - create_revision: 7048ed95a5ad3e43d697e0c397464193991fc230 - base_revision: 7048ed95a5ad3e43d697e0c397464193991fc230 - - platform: linux - create_revision: 7048ed95a5ad3e43d697e0c397464193991fc230 - base_revision: 7048ed95a5ad3e43d697e0c397464193991fc230 - - platform: macos - create_revision: 7048ed95a5ad3e43d697e0c397464193991fc230 - base_revision: 7048ed95a5ad3e43d697e0c397464193991fc230 - - platform: web - create_revision: 7048ed95a5ad3e43d697e0c397464193991fc230 - base_revision: 7048ed95a5ad3e43d697e0c397464193991fc230 - - platform: windows - create_revision: 7048ed95a5ad3e43d697e0c397464193991fc230 - base_revision: 7048ed95a5ad3e43d697e0c397464193991fc230 - - # User provided section - - # List of Local paths (relative to this file) that should be - # ignored by the migrate tool. - # - # Files that are not part of the templates will be ignored by default. - unmanaged_files: - - 'lib/main.dart' - - 'ios/Runner.xcodeproj/project.pbxproj' diff --git a/qiita_app/lib/constants/app_colors.dart b/qiita_app/lib/constants/app_colors.dart index b6498a3..28af359 100644 --- a/qiita_app/lib/constants/app_colors.dart +++ b/qiita_app/lib/constants/app_colors.dart @@ -4,9 +4,11 @@ class AppColors { static const Color primary = Color.fromRGBO(116, 193, 58, 1); static const Color darkgreen = Color.fromRGBO(70, 131, 0, 1); static const secondary = Color.fromRGBO(130, 130, 130, 1); + static const lightGray = Color.fromRGBO(245, 245, 245, 1); static const gray = Color.fromRGBO(118, 118, 128, 0.12); static const white = Colors.white; static const black = Colors.black; static const background = Color(0xFFFAFAFA); static const divider = Color(0xFFE0E0E0); + static const Color transparent = Colors.transparent; } diff --git a/qiita_app/lib/constants/app_text_style.dart b/qiita_app/lib/constants/app_text_style.dart index 3bad2e0..8c72dc1 100644 --- a/qiita_app/lib/constants/app_text_style.dart +++ b/qiita_app/lib/constants/app_text_style.dart @@ -17,4 +17,14 @@ class AppTextStyles { color: AppColors.secondary, fontWeight: FontWeight.w500, ); + static const TextStyle h3BasicBlack = TextStyle( + fontSize: 12, + color: AppColors.black, + fontWeight: FontWeight.w500, + ); + static const TextStyle h1ThinBlack = TextStyle( + fontSize: 17, + color: AppColors.black, + fontWeight: FontWeight.w100, + ); } diff --git a/qiita_app/lib/constants/texts.dart b/qiita_app/lib/constants/texts.dart new file mode 100644 index 0000000..c5d147f --- /dev/null +++ b/qiita_app/lib/constants/texts.dart @@ -0,0 +1,74 @@ +class Texts { + static const String privacyPolicyText = ''' +プライバシーポリシー + +情報の収集と使用 + +第三者に個人を特定できる情報を提供することはありません。 + +より良い体験のために、私たちのサービスを使用している間、特定の個人情報を提供するようにあなたに要求する場合があります。 +アプリは、あなたを識別するために使用される情報を収集する可能性のあるサードパーティのサービスを使用します。 + +アプリで使用されるサードパーティのサービスプロバイダー + +- ログデータ + +サービスを使用するたびに、アプリでエラーが発生した場合、ログデータと呼ばれる電話でデータと情報を(サードパーティ製品を通じて)収集することをお知らせします。このログデータには、デバイスのインターネットプロトコル(「IP」)アドレス、デバイス名、オペレーティングシステムのバージョン、サービスを利用する際のアプリの構成、サービスの使用日時、その他の統計などの情報が含まれる場合があります。 + +Qiita Feed Appではアプリの利便性向上を目的にして、個人を特定できないよう匿名化したデータを用いてアクセス解析を行なっています。 +例えばアプリのクラッシュ情報を匿名で送信し、バグの修正のために利用しています。 + +またご利用端末のOSやアプリバージョンの使用率などを解析しアプリの改善に役立てています。 + +このプライバシーポリシーの変更 + +プライバシーポリシーを随時更新する場合があります。したがって、変更がある場合はこのページを定期的に確認することをお勧めします。このページに新しいプライバシーポリシーを掲載して、変更をお知らせします。これらの変更は、このページに投稿された直後に有効になります。 + +お問い合わせ + +プライバシーポリシーについてご質問やご提案がありましたら、mcz9mmdev@gmail.comまでお気軽にお問い合わせください。 +'''; + static const String termsService = ''' +Qiita Feed App プライバシーポリシー +Shinonome, inc.(以下「当社」といいます。)は、当社が運営するサービス(以下「本サービス」といいます。)を提供するにあたり、個人情報保護に関する法規範を遵守し、以下のプライバシーポリシー(以下「本ポリシー」といいます。)に従って個人情報の適切な取得、利用、提供等を行います。 + +1. 個人情報について +本ポリシーにおいて個人情報とは、個人情報の保護に関する法律(以下「個人情報保護法」といいます。)に定める「個人情報」をいいます。 +当社は、本サービスに関して、以下の情報をはじめとしたユーザーの情報を取得する場合があり、これらの情報には個人情報が含まれることがあります。 + ユーザーが本サービスに登録する情報(氏名、ニックネーム、電話番号、メールアドレスおよびパスワード等) + ユーザーのプロフィールに関する情報(アイコン写真、オフィスへのチェックイン日時等、その他の個人に関する属性情報等) + 通信端末に関する情報(ユーザーのIPアドレス、利用状況、履歴、位置情報、利用端末、これまでにご利用いただいたサービスやご購入いただいた商品、ご覧になったページ・広告、ご利用時間帯、ご利用の方法、ご利用環境等) + +2. 取得した個人情報の利用目的について +当社は、取得した個人情報を、以下の目的のために利用いたします。 なお、個人情報の取得にあたって本ポリシーとは別に利用目的を通知した場合は、当社は、以下の目的に加え、個別に通知した目的のためにも当該個人情報を利用いたします。 + 本サービスをご利用するユーザー同士が本サービス上でお互いを認識できるようにするため + 本サービスの改善・内容を充実させるため。 + 新しいサービスの企画、検討、開発および提供をするため。 + ユーザーからのお問い合わせに対応するため。 + ユーザーの本人確認を行うため。 + その他、上記の利用目的および当社の事業に付帯、関連する目的のため。 + +3.個人情報の第三者への提供について +本サービスは、以下に定める場合、個人情報を第三者に提供します。 + 本サービスにおけるユーザーの識別のため、他のユーザー向けに本サービス上でユーザーの個人情報を表示する場合 + ユーザーの指示または同意に基づいて第三者に個人情報を提供する場合。 + 裁判所、監督官庁その他の公的機関から取得情報を提供するよう求められた場合等の個人情報保護法で第三者への個人情報の提供が認められている場合。 + +4. 第三者が提供するサービスについて +当社は、第三者が提供するサービスを用いて本サービスの品質向上または表示するコンテンツを最適化するために、 クッキーおよびアクセスログ等の情報を第三者に提供する場合があります。 +アプリで使用されているサードパーイティのサービスプロバイダは下記になります。 +・Firebase Analytics +6.個人情報の管理について +本法人は個人データを正確かつ最新の状態に保ち、紛失・改ざん・漏えいの防止等、安全管理のために必要かつ適切な措置を講じます。 + +5.業務委託の際の扱い +利用目的の達成のため、個人情報の取り扱いを外部に委託することがあります。その際は業務委託先に対して、漏えい、再提供のないよう個人情報の取扱いに関する契約を結ぶ等、適切な管理を行います + +6. 情報の開示・訂正・削除について +当社は、必要に応じて、本ポリシーを変更することがあります。 なお、法令上ユーザーの同意が必要となるような変更を実施する場合、当社所定の方法によりユーザーからの同意を取得いたします。 +7. 個人情報に関するお問い合わせ等について +このプライバシーポリシーに関するお問い合わせは、下記までお願いいたします。 +Shinonome, inc. アプリ開発チーム +MAIL: Matarai@shinonome.io +'''; +} diff --git a/qiita_app/lib/widgets/app_bottom_modal_sheet.dart b/qiita_app/lib/widgets/app_bottom_modal_sheet.dart new file mode 100644 index 0000000..ab71e57 --- /dev/null +++ b/qiita_app/lib/widgets/app_bottom_modal_sheet.dart @@ -0,0 +1,90 @@ +import 'package:flutter/material.dart'; +import 'package:qiita_app/constants/app_colors.dart'; +import 'package:qiita_app/constants/app_text_style.dart'; + +void showAppBottomModalSheet(BuildContext context, + {required String title, required Widget content}) { + showModalBottomSheet( + context: context, + isScrollControlled: true, + builder: (BuildContext context) { + return AppBottomModalSheet(title: title, content: content); + }, + shape: const RoundedRectangleBorder( + // 角丸を設定 + borderRadius: BorderRadius.vertical(top: Radius.circular(10)), + ), + ); +} + +class AppBottomModalSheet extends StatelessWidget { + final String title; + final Widget content; + final bool showBottomDivider; + + const AppBottomModalSheet({ + Key? key, + required this.title, + required this.content, + this.showBottomDivider = true, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + return DraggableScrollableSheet( + expand: false, + // 初めて描画されるときの高さは画面の90% + initialChildSize: 0.9, + builder: (context, scrollController) { + return Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + AppBottomModalHeader( + title: title, + ), + if (showBottomDivider) // showBottomDividerがtrueの場合にDividerを表示 + const Divider( + color: AppColors.black, + thickness: 0.4, + height: 0.4, + ), + Expanded( + child: Container( + padding: + const EdgeInsets.symmetric(horizontal: 16, vertical: 18), + child: SingleChildScrollView( + child: content, + ), + ), + ), + ], + ); + }, + ); + } +} + +class AppBottomModalHeader extends StatelessWidget { + final String title; + + const AppBottomModalHeader({required this.title, super.key}); + + @override + Widget build(BuildContext context) { + return Container( + padding: const EdgeInsets.only(bottom: 11), + height: 56, + decoration: const BoxDecoration( + color: AppColors.lightGray, + borderRadius: BorderRadius.vertical( + top: Radius.circular(10), + ), + ), + alignment: Alignment.bottomCenter, + child: Text( + title, + style: AppTextStyles.h1ThinBlack, + ), + ); + } +}