feat(stream_chat_localizations): Initial implementation
Signed-off-by: Sahil Kumar <[email protected]>
This commit is contained in:
@@ -103,6 +103,12 @@ extension BuildContextX on BuildContext {
|
|||||||
// ignore: public_member_api_docs
|
// ignore: public_member_api_docs
|
||||||
double get textScaleFactor =>
|
double get textScaleFactor =>
|
||||||
MediaQuery.maybeOf(this)?.textScaleFactor ?? 1.0;
|
MediaQuery.maybeOf(this)?.textScaleFactor ?? 1.0;
|
||||||
|
|
||||||
|
String translate({
|
||||||
|
required String key,
|
||||||
|
required String defaultValue,
|
||||||
|
}) =>
|
||||||
|
StreamChatLocalizations.of(this)?.translate(key) ?? defaultValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Extension on [BorderRadius]
|
/// Extension on [BorderRadius]
|
||||||
|
|||||||
@@ -133,11 +133,6 @@ class StreamChatState extends State<StreamChat> {
|
|||||||
/// The current user as a stream
|
/// The current user as a stream
|
||||||
Stream<User?> get userStream => widget.client.state.userStream;
|
Stream<User?> get userStream => widget.client.state.userStream;
|
||||||
|
|
||||||
@override
|
|
||||||
void initState() {
|
|
||||||
super.initState();
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void didChangeDependencies() {
|
void didChangeDependencies() {
|
||||||
final locale = ui.window.locale;
|
final locale = ui.window.locale;
|
||||||
|
|||||||
@@ -0,0 +1,97 @@
|
|||||||
|
import 'package:flutter/widgets.dart';
|
||||||
|
|
||||||
|
// TODO : Fix localization instructions
|
||||||
|
// ADDING A NEW STRING
|
||||||
|
//
|
||||||
|
// If you (someone contributing to the Stream Chat Flutter) want to add a new
|
||||||
|
// string to the StreamChatLocalizations object (e.g. because you've added a new
|
||||||
|
// widget and it has a tooltip), follow these steps:
|
||||||
|
//
|
||||||
|
// 1. Add the new getter to StreamChatLocalizations below.
|
||||||
|
//
|
||||||
|
// 2. Implement a default value in DefaultMaterialLocalizations below.
|
||||||
|
//
|
||||||
|
// 3. Add a test to test/material/localizations_test.dart that verifies that
|
||||||
|
// this new value is implemented.
|
||||||
|
//
|
||||||
|
// 4. Update the flutter_localizations package. To add a new string to the
|
||||||
|
// flutter_localizations package, you must first add it to the English
|
||||||
|
// translations (lib/src/l10n/en.json), including a description.
|
||||||
|
//
|
||||||
|
// Then you need to add new entries for the string to all of the other
|
||||||
|
// language locale files by running:
|
||||||
|
// ```
|
||||||
|
// dart dev/tools/localization/bin/gen_missing_localizations.dart
|
||||||
|
// ```
|
||||||
|
// Which will copy the english strings into the other locales as placeholders
|
||||||
|
// until they can be translated.
|
||||||
|
//
|
||||||
|
// Finally you need to re-generate lib/src/l10n/localizations.dart by running:
|
||||||
|
// ```
|
||||||
|
// dart dev/tools/localization/bin/gen_localizations.dart --overwrite
|
||||||
|
// ```
|
||||||
|
//
|
||||||
|
// There is a README file with further information in the lib/src/l10n/
|
||||||
|
// directory.
|
||||||
|
//
|
||||||
|
// 5. If you are a Google employee, you should then also follow the instructions
|
||||||
|
// at go/flutter-l10n. If you're not, don't worry about it.
|
||||||
|
//
|
||||||
|
// UPDATING AN EXISTING STRING
|
||||||
|
//
|
||||||
|
// If you (someone contributing to the Flutter framework) want to modify an
|
||||||
|
// existing string in the MaterialLocalizations objects, follow these steps:
|
||||||
|
//
|
||||||
|
// 1. Modify the default value of the relevant getter(s) in
|
||||||
|
// DefaultMaterialLocalizations below.
|
||||||
|
//
|
||||||
|
// 2. Update the flutter_localizations package. Modify the out-of-date English
|
||||||
|
// strings in lib/src/l10n/material_en.arb.
|
||||||
|
//
|
||||||
|
// You also need to re-generate lib/src/l10n/localizations.dart by running:
|
||||||
|
// ```
|
||||||
|
// dart dev/tools/localization/bin/gen_localizations.dart --overwrite
|
||||||
|
// ```
|
||||||
|
//
|
||||||
|
// This script may result in your updated getters being created in newer
|
||||||
|
// locales and set to the old value of the strings. This is to be expected.
|
||||||
|
// Leave them as they were generated, and they will be picked up for
|
||||||
|
// translation.
|
||||||
|
//
|
||||||
|
// There is a README file with further information in the lib/src/l10n/
|
||||||
|
// directory.
|
||||||
|
//
|
||||||
|
// 3. If you are a Google employee, you should then also follow the instructions
|
||||||
|
// at go/flutter-l10n. If you're not, don't worry about it.
|
||||||
|
|
||||||
|
/// Defines the localized resource values used by the StreamChatFlutter widgets.
|
||||||
|
///
|
||||||
|
/// See also:
|
||||||
|
///
|
||||||
|
/// * [GlobalStreamChatLocalizations], which provides material localizations
|
||||||
|
/// for many languages.
|
||||||
|
abstract class StreamChatLocalizations {
|
||||||
|
///
|
||||||
|
String? translate(String key);
|
||||||
|
|
||||||
|
/// The `StreamChatLocalizations` from the closest [Localizations] instance
|
||||||
|
/// that encloses the given context.
|
||||||
|
///
|
||||||
|
/// If no [StreamChatLocalizations] are available in the given `context`, this
|
||||||
|
/// method returns null.
|
||||||
|
///
|
||||||
|
/// This method is just a convenient shorthand for:
|
||||||
|
/// `Localizations.of<StreamChatLocalizations>(context, StreamChatLocalizations)`.
|
||||||
|
///
|
||||||
|
/// References to the localized resources defined by this class are typically
|
||||||
|
/// written in terms of this method. For example:
|
||||||
|
///
|
||||||
|
/// ```dart
|
||||||
|
/// tooltip: StreamChatLocalizations.of(context).backButtonTooltip,
|
||||||
|
/// ```
|
||||||
|
static StreamChatLocalizations? of(BuildContext context) =>
|
||||||
|
Localizations.of<StreamChatLocalizations>(
|
||||||
|
context,
|
||||||
|
StreamChatLocalizations,
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -28,6 +28,7 @@ export 'src/reaction_icon.dart';
|
|||||||
export 'src/reaction_picker.dart';
|
export 'src/reaction_picker.dart';
|
||||||
export 'src/sending_indicator.dart';
|
export 'src/sending_indicator.dart';
|
||||||
export 'src/stream_chat.dart';
|
export 'src/stream_chat.dart';
|
||||||
|
export 'src/stream_chat_localizations.dart';
|
||||||
export 'src/stream_chat_theme.dart';
|
export 'src/stream_chat_theme.dart';
|
||||||
export 'src/stream_neumorphic_button.dart';
|
export 'src/stream_neumorphic_button.dart';
|
||||||
export 'src/stream_svg_icon.dart';
|
export 'src/stream_svg_icon.dart';
|
||||||
|
|||||||
@@ -0,0 +1,74 @@
|
|||||||
|
# Miscellaneous
|
||||||
|
*.class
|
||||||
|
*.log
|
||||||
|
*.pyc
|
||||||
|
*.swp
|
||||||
|
.DS_Store
|
||||||
|
.atom/
|
||||||
|
.buildlog/
|
||||||
|
.history
|
||||||
|
.svn/
|
||||||
|
|
||||||
|
# IntelliJ related
|
||||||
|
*.iml
|
||||||
|
*.ipr
|
||||||
|
*.iws
|
||||||
|
.idea/
|
||||||
|
|
||||||
|
# The .vscode folder contains launch configuration and tasks you configure in
|
||||||
|
# VS Code which you may wish to be included in version control, so this line
|
||||||
|
# is commented out by default.
|
||||||
|
#.vscode/
|
||||||
|
|
||||||
|
# Flutter/Dart/Pub related
|
||||||
|
**/doc/api/
|
||||||
|
.dart_tool/
|
||||||
|
.flutter-plugins
|
||||||
|
.flutter-plugins-dependencies
|
||||||
|
.packages
|
||||||
|
.pub-cache/
|
||||||
|
.pub/
|
||||||
|
build/
|
||||||
|
|
||||||
|
# Android related
|
||||||
|
**/android/**/gradle-wrapper.jar
|
||||||
|
**/android/.gradle
|
||||||
|
**/android/captures/
|
||||||
|
**/android/gradlew
|
||||||
|
**/android/gradlew.bat
|
||||||
|
**/android/local.properties
|
||||||
|
**/android/**/GeneratedPluginRegistrant.java
|
||||||
|
|
||||||
|
# iOS/XCode related
|
||||||
|
**/ios/**/*.mode1v3
|
||||||
|
**/ios/**/*.mode2v3
|
||||||
|
**/ios/**/*.moved-aside
|
||||||
|
**/ios/**/*.pbxuser
|
||||||
|
**/ios/**/*.perspectivev3
|
||||||
|
**/ios/**/*sync/
|
||||||
|
**/ios/**/.sconsign.dblite
|
||||||
|
**/ios/**/.tags*
|
||||||
|
**/ios/**/.vagrant/
|
||||||
|
**/ios/**/DerivedData/
|
||||||
|
**/ios/**/Icon?
|
||||||
|
**/ios/**/Pods/
|
||||||
|
**/ios/**/.symlinks/
|
||||||
|
**/ios/**/profile
|
||||||
|
**/ios/**/xcuserdata
|
||||||
|
**/ios/.generated/
|
||||||
|
**/ios/Flutter/App.framework
|
||||||
|
**/ios/Flutter/Flutter.framework
|
||||||
|
**/ios/Flutter/Flutter.podspec
|
||||||
|
**/ios/Flutter/Generated.xcconfig
|
||||||
|
**/ios/Flutter/app.flx
|
||||||
|
**/ios/Flutter/app.zip
|
||||||
|
**/ios/Flutter/flutter_assets/
|
||||||
|
**/ios/Flutter/flutter_export_environment.sh
|
||||||
|
**/ios/ServiceDefinitions.json
|
||||||
|
**/ios/Runner/GeneratedPluginRegistrant.*
|
||||||
|
|
||||||
|
# Exceptions to above rules.
|
||||||
|
!**/ios/**/default.mode1v3
|
||||||
|
!**/ios/**/default.mode2v3
|
||||||
|
!**/ios/**/default.pbxuser
|
||||||
|
!**/ios/**/default.perspectivev3
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
# 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 and should not be manually edited.
|
||||||
|
|
||||||
|
version:
|
||||||
|
revision: d79295af24c3ed621c33713ecda14ad196fd9c31
|
||||||
|
channel: stable
|
||||||
|
|
||||||
|
project_type: package
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
## 0.0.1
|
||||||
|
|
||||||
|
* TODO: Describe initial release.
|
||||||
@@ -0,0 +1,219 @@
|
|||||||
|
SOURCE CODE LICENSE AGREEMENT
|
||||||
|
|
||||||
|
IMPORTANT - READ THIS CAREFULLY BEFORE DOWNLOADING, INSTALLING, USING OR
|
||||||
|
ELECTRONICALLY ACCESSING THIS PROPRIETARY PRODUCT.
|
||||||
|
|
||||||
|
THIS IS A LEGAL AGREEMENT BETWEEN STREAM.IO, INC. (“STREAM.IO”) AND THE
|
||||||
|
BUSINESS ENTITY OR PERSON FOR WHOM YOU (“YOU”) ARE ACTING (“CUSTOMER”) AS THE
|
||||||
|
LICENSEE OF THE PROPRIETARY SOFTWARE INTO WHICH THIS AGREEMENT HAS BEEN
|
||||||
|
INCLUDED (THE “AGREEMENT”). YOU AGREE THAT YOU ARE THE CUSTOMER, OR YOU ARE AN
|
||||||
|
EMPLOYEE OR AGENT OF CUSTOMER AND ARE ENTERING INTO THIS AGREEMENT FOR LICENSE
|
||||||
|
OF THE SOFTWARE BY CUSTOMER FOR CUSTOMER’S BUSINESS PURPOSES AS DESCRIBED IN
|
||||||
|
AND IN ACCORDANCE WITH THIS AGREEMENT. YOU HEREBY AGREE THAT YOU ENTER INTO
|
||||||
|
THIS AGREEMENT ON BEHALF OF CUSTOMER AND THAT YOU HAVE THE AUTHORITY TO BIND
|
||||||
|
CUSTOMER TO THIS AGREEMENT.
|
||||||
|
|
||||||
|
STREAM.IO IS WILLING TO LICENSE THE SOFTWARE TO CUSTOMER ONLY ON THE FOLLOWING
|
||||||
|
CONDITIONS: (1) YOU ARE A CURRENT CUSTOMER OF STREAM.IO; (2) YOU ARE NOT A
|
||||||
|
COMPETITOR OF STREAM.IO; AND (3) THAT YOU ACCEPT ALL THE TERMS IN THIS
|
||||||
|
AGREEMENT. BY DOWNLOADING, INSTALLING, CONFIGURING, ACCESSING OR OTHERWISE
|
||||||
|
USING THE SOFTWARE, INCLUDING ANY UPDATES, UPGRADES, OR NEWER VERSIONS, YOU
|
||||||
|
REPRESENT, WARRANT AND ACKNOWLEDGE THAT (A) CUSTOMER IS A CURRENT CUSTOMER OF
|
||||||
|
STREAM.IO; (B) CUSTOMER IS NOT A COMPETITOR OF STREAM.IO; AND THAT (C) YOU HAVE
|
||||||
|
READ THIS AGREEMENT, UNDERSTAND THIS AGREEMENT, AND THAT CUSTOMER AGREES TO BE
|
||||||
|
BOUND BY ALL THE TERMS OF THIS AGREEMENT.
|
||||||
|
|
||||||
|
IF YOU DO NOT AGREE TO ALL THE TERMS AND CONDITIONS OF THIS AGREEMENT,
|
||||||
|
STREAM.IO IS UNWILLING TO LICENSE THE SOFTWARE TO CUSTOMER, AND THEREFORE, DO
|
||||||
|
NOT COMPLETE THE DOWNLOAD PROCESS, ACCESS OR OTHERWISE USE THE SOFTWARE, AND
|
||||||
|
CUSTOMER SHOULD IMMEDIATELY RETURN THE SOFTWARE AND CEASE ANY USE OF THE
|
||||||
|
SOFTWARE.
|
||||||
|
|
||||||
|
1. SOFTWARE. The Stream.io software accompanying this Agreement, may include
|
||||||
|
Source Code, Executable Object Code, associated media, printed materials and
|
||||||
|
documentation (collectively, the “Software”). The Software also includes any
|
||||||
|
updates or upgrades to or new versions of the original Software, if and when
|
||||||
|
made available to you by Stream.io. “Source Code” means computer programming
|
||||||
|
code in human readable form that is not suitable for machine execution without
|
||||||
|
the intervening steps of interpretation or compilation. “Executable Object
|
||||||
|
Code" means the computer programming code in any other form than Source Code
|
||||||
|
that is not readily perceivable by humans and suitable for machine execution
|
||||||
|
without the intervening steps of interpretation or compilation. “Site” means a
|
||||||
|
Customer location controlled by Customer. “Authorized User” means any employee
|
||||||
|
or contractor of Customer working at the Site, who has signed a written
|
||||||
|
confidentiality agreement with Customer or is otherwise bound in writing by
|
||||||
|
confidentiality and use obligations at least as restrictive as those imposed
|
||||||
|
under this Agreement.
|
||||||
|
|
||||||
|
2. LICENSE GRANT. Subject to the terms and conditions of this Agreement, in
|
||||||
|
consideration for the representations, warranties, and covenants made by
|
||||||
|
Customer in this Agreement, Stream.io grants to Customer, during the term of
|
||||||
|
this Agreement, a personal, non-exclusive, non-transferable, non-sublicensable
|
||||||
|
license to:
|
||||||
|
|
||||||
|
a. install and use Software Source Code on password protected computers at a Site,
|
||||||
|
restricted to Authorized Users;
|
||||||
|
|
||||||
|
b. create derivative works, improvements (whether or not patentable), extensions
|
||||||
|
and other modifications to the Software Source Code (“Modifications”) to build
|
||||||
|
unique scalable newsfeeds, activity streams, and in-app messaging via Stream’s
|
||||||
|
application program interface (“API”);
|
||||||
|
|
||||||
|
c. compile the Software Source Code to create Executable Object Code versions of
|
||||||
|
the Software Source Code and Modifications to build such newsfeeds, activity
|
||||||
|
streams, and in-app messaging via the API;
|
||||||
|
|
||||||
|
d. install, execute and use such Executable Object Code versions solely for
|
||||||
|
Customer’s internal business use (including development of websites through
|
||||||
|
which data generated by Stream services will be streamed (“Apps”));
|
||||||
|
|
||||||
|
e. use and distribute such Executable Object Code as part of Customer’s Apps; and
|
||||||
|
|
||||||
|
f. make electronic copies of the Software and Modifications as required for backup
|
||||||
|
or archival purposes.
|
||||||
|
|
||||||
|
3. RESTRICTIONS. Customer is responsible for all activities that occur in
|
||||||
|
connection with the Software. Customer will not, and will not attempt to: (a)
|
||||||
|
sublicense or transfer the Software or any Source Code related to the Software
|
||||||
|
or any of Customer’s rights under this Agreement, except as otherwise provided
|
||||||
|
in this Agreement, (b) use the Software Source Code for the benefit of a third
|
||||||
|
party or to operate a service; (c) allow any third party to access or use the
|
||||||
|
Software Source Code; (d) sublicense or distribute the Software Source Code or
|
||||||
|
any Modifications in Source Code or other derivative works based on any part of
|
||||||
|
the Software Source Code; (e) use the Software in any manner that competes with
|
||||||
|
Stream.io or its business; or (e) otherwise use the Software in any manner that
|
||||||
|
exceeds the scope of use permitted in this Agreement. Customer shall use the
|
||||||
|
Software in compliance with any accompanying documentation any laws applicable
|
||||||
|
to Customer.
|
||||||
|
|
||||||
|
4. OPEN SOURCE. Customer and its Authorized Users shall not use any software or
|
||||||
|
software components that are open source in conjunction with the Software
|
||||||
|
Source Code or any Modifications in Source Code or in any way that could
|
||||||
|
subject the Software to any open source licenses.
|
||||||
|
|
||||||
|
5. CONTRACTORS. Under the rights granted to Customer under this Agreement,
|
||||||
|
Customer may permit its employees, contractors, and agencies of Customer to
|
||||||
|
become Authorized Users to exercise the rights to the Software granted to
|
||||||
|
Customer in accordance with this Agreement solely on behalf of Customer to
|
||||||
|
provide services to Customer; provided that Customer shall be liable for the
|
||||||
|
acts and omissions of all Authorized Users to the extent any of such acts or
|
||||||
|
omissions, if performed by Customer, would constitute a breach of, or otherwise
|
||||||
|
give rise to liability to Customer under, this Agreement. Customer shall not
|
||||||
|
and shall not permit any Authorized User to use the Software except as
|
||||||
|
expressly permitted in this Agreement.
|
||||||
|
|
||||||
|
6. COMPETITIVE PRODUCT DEVELOPMENT. Customer shall not use the Software in any way
|
||||||
|
to engage in the development of products or services which could be reasonably
|
||||||
|
construed to provide a complete or partial functional or commercial alternative
|
||||||
|
to Stream.io’s products or services (a “Competitive Product”). Customer shall
|
||||||
|
ensure that there is no direct or indirect use of, or sharing of, Software
|
||||||
|
source code, or other information based upon or derived from the Software to
|
||||||
|
develop such products or services. Without derogating from the generality of
|
||||||
|
the foregoing, development of Competitive Products shall include having direct
|
||||||
|
or indirect access to, supervising, consulting or assisting in the development
|
||||||
|
of, or producing any specifications, documentation, object code or source code
|
||||||
|
for, all or part of a Competitive Product.
|
||||||
|
|
||||||
|
7. LIMITATION ON MODIFICATIONS. Notwithstanding any provision in this Agreement,
|
||||||
|
Modifications may only be created and used by Customer as permitted by this
|
||||||
|
Agreement and Modification Source Code may not be distributed to third parties.
|
||||||
|
Customer will not assert against Stream.io, its affiliates, or their customers,
|
||||||
|
direct or indirect, agents and contractors, in any way, any patent rights that
|
||||||
|
Customer may obtain relating to any Modifications for Stream.io, its
|
||||||
|
affiliates’, or their customers’, direct or indirect, agents’ and contractors’
|
||||||
|
manufacture, use, import, offer for sale or sale of any Stream.io products or
|
||||||
|
services.
|
||||||
|
|
||||||
|
8. DELIVERY AND ACCEPTANCE. The Software will be delivered electronically pursuant
|
||||||
|
to Stream.io standard download procedures. The Software is deemed accepted upon
|
||||||
|
delivery.
|
||||||
|
|
||||||
|
9. IMPLEMENTATION AND SUPPORT. Stream.io has no obligation under this Agreement to
|
||||||
|
provide any support or consultation concerning the Software.
|
||||||
|
|
||||||
|
10. TERM AND TERMINATION. The term of this Agreement begins when the Software is
|
||||||
|
downloaded or accessed and shall continue until terminated. Either party may
|
||||||
|
terminate this Agreement upon written notice. This Agreement shall
|
||||||
|
automatically terminate if Customer is or becomes a competitor of Stream.io or
|
||||||
|
makes or sells any Competitive Products. Upon termination of this Agreement for
|
||||||
|
any reason, (a) all rights granted to Customer in this Agreement immediately
|
||||||
|
cease to exist, (b) Customer must promptly discontinue all use of the Software
|
||||||
|
and return to Stream.io or destroy all copies of the Software in Customer’s
|
||||||
|
possession or control. Any continued use of the Software by Customer or attempt
|
||||||
|
by Customer to exercise any rights under this Agreement after this Agreement
|
||||||
|
has terminated shall be considered copyright infringement and subject Customer
|
||||||
|
to applicable remedies for copyright infringement. Sections 2, 5, 6, 8 and 9
|
||||||
|
shall survive expiration or termination of this Agreement for any reason.
|
||||||
|
|
||||||
|
11. OWNERSHIP. As between the parties, the Software and all worldwide intellectual
|
||||||
|
property rights and proprietary rights relating thereto or embodied therein,
|
||||||
|
are the exclusive property of Stream.io and its suppliers. Stream.io and its
|
||||||
|
suppliers reserve all rights in and to the Software not expressly granted to
|
||||||
|
Customer in this Agreement, and no other licenses or rights are granted by
|
||||||
|
implication, estoppel or otherwise.
|
||||||
|
|
||||||
|
12. WARRANTY DISCLAIMER. USE OF THIS SOFTWARE IS ENTIRELY AT YOURS AND CUSTOMER’S
|
||||||
|
OWN RISK. THE SOFTWARE IS PROVIDED “AS IS” WITHOUT ANY WARRANTY OF ANY KIND
|
||||||
|
WHATSOEVER. STREAM.IO DOES NOT MAKE, AND HEREBY DISCLAIMS, ANY WARRANTY OF ANY
|
||||||
|
KIND, WHETHER EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING WITHOUT
|
||||||
|
LIMITATION, THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE, TITLE, NON-INFRINGEMENT OF THIRD-PARTY RIGHTS, RESULTS, EFFORTS,
|
||||||
|
QUALITY OR QUIET ENJOYMENT. STREAM.IO DOES NOT WARRANT THAT THE SOFTWARE IS
|
||||||
|
ERROR-FREE, WILL FUNCTION WITHOUT INTERRUPTION, WILL MEET ANY SPECIFIC NEED
|
||||||
|
THAT CUSTOMER HAS, THAT ALL DEFECTS WILL BE CORRECTED OR THAT IT IS
|
||||||
|
SUFFICIENTLY DOCUMENTED TO BE USABLE BY CUSTOMER. TO THE EXTENT THAT STREAM.IO
|
||||||
|
MAY NOT DISCLAIM ANY WARRANTY AS A MATTER OF APPLICABLE LAW, THE SCOPE AND
|
||||||
|
DURATION OF SUCH WARRANTY WILL BE THE MINIMUM PERMITTED UNDER SUCH LAW.
|
||||||
|
CUSTOMER ACKNOWLEDGES THAT IT HAS RELIED ON NO WARRANTIES OTHER THAN THE
|
||||||
|
EXPRESS WARRANTIES IN THIS AGREEMENT.
|
||||||
|
|
||||||
|
13. LIMITATION OF LIABILITY. TO THE FULLEST EXTENT PERMISSIBLE BY LAW, STREAM.IO’S
|
||||||
|
TOTAL LIABILITY FOR ALL DAMAGES ARISING OUT OF OR RELATED TO THE SOFTWARE OR
|
||||||
|
THIS AGREEMENT, WHETHER IN CONTRACT, TORT (INCLUDING NEGLIGENCE) OR OTHERWISE,
|
||||||
|
SHALL NOT EXCEED $100. IN NO EVENT WILL STREAM.IO BE LIABLE FOR ANY INDIRECT,
|
||||||
|
CONSEQUENTIAL, EXEMPLARY, PUNITIVE, SPECIAL OR INCIDENTAL DAMAGES OF ANY KIND
|
||||||
|
WHATSOEVER, INCLUDING ANY LOST DATA AND LOST PROFITS, ARISING FROM OR RELATING
|
||||||
|
TO THE SOFTWARE EVEN IF STREAM.IO HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
||||||
|
DAMAGES. CUSTOMER ACKNOWLEDGES THAT THIS PROVISION REFLECTS THE AGREED UPON
|
||||||
|
ALLOCATION OF RISK FOR THIS AGREEMENT AND THAT STREAM.IO WOULD NOT ENTER INTO
|
||||||
|
THIS AGREEMENT WITHOUT THESE LIMITATIONS ON ITS LIABILITY.
|
||||||
|
|
||||||
|
14. General. Customer may not assign or transfer this Agreement, by operation of
|
||||||
|
law or otherwise, or any of its rights under this Agreement (including the
|
||||||
|
license rights granted to Customer) to any third party without Stream.io’s
|
||||||
|
prior written consent, which consent will not be unreasonably withheld or
|
||||||
|
delayed. Stream.io may assign this Agreement, without consent, including, but
|
||||||
|
limited to, affiliate or any successor to all or substantially all its business
|
||||||
|
or assets to which this Agreement relates, whether by merger, sale of assets,
|
||||||
|
sale of stock, reorganization or otherwise. Any attempted assignment or
|
||||||
|
transfer in violation of the foregoing will be null and void. Stream.io shall
|
||||||
|
not be liable hereunder by reason of any failure or delay in the performance of
|
||||||
|
its obligations hereunder for any cause which is beyond the reasonable control.
|
||||||
|
All notices, consents, and approvals under this Agreement must be delivered in
|
||||||
|
writing by courier, by electronic mail, or by certified or registered mail,
|
||||||
|
(postage prepaid and return receipt requested) to the other party at the
|
||||||
|
address set forth in the customer agreement between Stream.io and Customer and
|
||||||
|
will be effective upon receipt or when delivery is refused. This Agreement will
|
||||||
|
be governed by and interpreted in accordance with the laws of the State of
|
||||||
|
Colorado, without reference to its choice of laws rules. The United Nations
|
||||||
|
Convention on Contracts for the International Sale of Goods does not apply to
|
||||||
|
this Agreement. Any action or proceeding arising from or relating to this
|
||||||
|
Agreement shall be brought in a federal or state court in Denver, Colorado, and
|
||||||
|
each party irrevocably submits to the jurisdiction and venue of any such court
|
||||||
|
in any such action or proceeding. All waivers must be in writing. Any waiver or
|
||||||
|
failure to enforce any provision of this Agreement on one occasion will not be
|
||||||
|
deemed a waiver of any other provision or of such provision on any other
|
||||||
|
occasion. If any provision of this Agreement is unenforceable, such provision
|
||||||
|
will be changed and interpreted to accomplish the objectives of such provision
|
||||||
|
to the greatest extent possible under applicable law and the remaining
|
||||||
|
provisions will continue in full force and effect. Customer shall not violate
|
||||||
|
any applicable law, rule or regulation, including those regarding the export of
|
||||||
|
technical data. The headings of Sections of this Agreement are for convenience
|
||||||
|
and are not to be used in interpreting this Agreement. As used in this
|
||||||
|
Agreement, the word “including” means “including but not limited to.” This
|
||||||
|
Agreement (including all exhibits and attachments) constitutes the entire
|
||||||
|
agreement between the parties regarding the subject hereof and supersedes all
|
||||||
|
prior or contemporaneous agreements, understandings and communication, whether
|
||||||
|
written or oral. This Agreement may be amended only by a written document
|
||||||
|
signed by both parties. The terms of any purchase order or similar document
|
||||||
|
submitted by Customer to Stream.io will have no effect.
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
# stream_chat_localizations
|
||||||
|
|
||||||
|
A new Flutter project.
|
||||||
|
|
||||||
|
## Getting Started
|
||||||
|
|
||||||
|
This project is a starting point for a Dart
|
||||||
|
[package](https://flutter.dev/developing-packages/),
|
||||||
|
a library module containing code that can be shared easily across
|
||||||
|
multiple Flutter or Dart projects.
|
||||||
|
|
||||||
|
For help getting started with Flutter, view our
|
||||||
|
[online documentation](https://flutter.dev/docs), which offers tutorials,
|
||||||
|
samples, guidance on mobile development, and a full API reference.
|
||||||
@@ -0,0 +1,129 @@
|
|||||||
|
import 'dart:convert';
|
||||||
|
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter/services.dart' show rootBundle;
|
||||||
|
import 'package:flutter_localizations/flutter_localizations.dart';
|
||||||
|
import 'package:stream_chat_flutter/stream_chat_flutter.dart'
|
||||||
|
show StreamChatLocalizations;
|
||||||
|
|
||||||
|
const kStreamChatSupportedLanguages = [];
|
||||||
|
|
||||||
|
/// Implementation of localized strings for the stream chat widgets
|
||||||
|
///
|
||||||
|
/// ## Supported languages
|
||||||
|
///
|
||||||
|
/// This class supports locales with the following [Locale.languageCode]s:
|
||||||
|
///
|
||||||
|
/// {@macro flutter.localizations.material.languages}
|
||||||
|
///
|
||||||
|
/// This list is available programmatically via [kStreamChatSupportedLanguages].
|
||||||
|
///
|
||||||
|
/// ## Sample code
|
||||||
|
///
|
||||||
|
/// To include the localizations provided by this class in a [MaterialApp],
|
||||||
|
/// add [GlobalStreamChatLocalizations.delegates] to
|
||||||
|
/// [MaterialApp.localizationsDelegates], and specify the locales your
|
||||||
|
/// app supports with [MaterialApp.supportedLocales]:
|
||||||
|
///
|
||||||
|
/// ```dart
|
||||||
|
/// new MaterialApp(
|
||||||
|
/// localizationsDelegates: GlobalStreamChatLocalizations.delegates,
|
||||||
|
/// supportedLocales: [
|
||||||
|
/// const Locale('en', 'US'), // American English
|
||||||
|
/// const Locale('he', 'IL'), // Israeli Hebrew
|
||||||
|
/// // ...
|
||||||
|
/// ],
|
||||||
|
/// // ...
|
||||||
|
/// )
|
||||||
|
/// ```
|
||||||
|
///
|
||||||
|
class GlobalStreamChatLocalizations implements StreamChatLocalizations {
|
||||||
|
/// Construct an object that defines the localized values for the widgets
|
||||||
|
/// library for US English (only).
|
||||||
|
///
|
||||||
|
/// [LocalizationsDelegate] implementations typically call the static [load]
|
||||||
|
const GlobalStreamChatLocalizations(this.locale, this.translations);
|
||||||
|
|
||||||
|
final Locale locale;
|
||||||
|
|
||||||
|
final Map<String, String?> translations;
|
||||||
|
|
||||||
|
static String getLocalePath(Locale locale) =>
|
||||||
|
'packages/stream_chat_localizations/i18n/${locale.languageCode}.json';
|
||||||
|
|
||||||
|
/// Creates an object that provides US English resource values for the
|
||||||
|
/// lowest levels of the widgets library.
|
||||||
|
///
|
||||||
|
/// The [locale] parameter is ignored.
|
||||||
|
///
|
||||||
|
/// This method is typically used to create a [LocalizationsDelegate].
|
||||||
|
/// The [WidgetsApp] does so by default.
|
||||||
|
static Future<StreamChatLocalizations> load(Locale locale) async {
|
||||||
|
final localePath = getLocalePath(locale);
|
||||||
|
final rawTranslations = await rootBundle.loadString(localePath);
|
||||||
|
Map<String, String?> translations = json.decode(rawTranslations);
|
||||||
|
translations = translations.map(
|
||||||
|
(key, value) => MapEntry(key, value?.toString()),
|
||||||
|
);
|
||||||
|
return GlobalStreamChatLocalizations(locale, translations);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// A [LocalizationsDelegate] for [StreamChatLocalizations].
|
||||||
|
///
|
||||||
|
/// Most internationalized apps will use [GlobalStreamChatLocalizations.delegates]
|
||||||
|
/// as the value of [MaterialApp.localizationsDelegates] to include
|
||||||
|
/// the localizations for both the flutter and stream chat widget libraries.
|
||||||
|
static const LocalizationsDelegate<StreamChatLocalizations> delegate =
|
||||||
|
_StreamChatLocalizationsDelegate();
|
||||||
|
|
||||||
|
/// A value for [MaterialApp.localizationsDelegates] that's typically used by
|
||||||
|
/// internationalized apps.
|
||||||
|
///
|
||||||
|
/// ## Sample code
|
||||||
|
///
|
||||||
|
/// To include the localizations provided by this class and by
|
||||||
|
/// [GlobalWidgetsLocalizations] in a [MaterialApp],
|
||||||
|
/// use [GlobalStreamChatLocalizations.delegates] as the value of
|
||||||
|
/// [MaterialApp.localizationsDelegates], and specify the locales your
|
||||||
|
/// app supports with [MaterialApp.supportedLocales]:
|
||||||
|
///
|
||||||
|
/// ```dart
|
||||||
|
/// new MaterialApp(
|
||||||
|
/// localizationsDelegates: GlobalStreamChatLocalizations.delegates,
|
||||||
|
/// supportedLocales: [
|
||||||
|
/// const Locale('en', 'US'), // English
|
||||||
|
/// const Locale('he', 'IL'), // Hebrew
|
||||||
|
/// ],
|
||||||
|
/// // ...
|
||||||
|
/// )
|
||||||
|
/// ```
|
||||||
|
static const List<LocalizationsDelegate> delegates = [
|
||||||
|
delegate,
|
||||||
|
GlobalCupertinoLocalizations.delegate,
|
||||||
|
GlobalMaterialLocalizations.delegate,
|
||||||
|
GlobalWidgetsLocalizations.delegate,
|
||||||
|
];
|
||||||
|
|
||||||
|
@override
|
||||||
|
String? translate(String key) => translations[key];
|
||||||
|
}
|
||||||
|
|
||||||
|
class _StreamChatLocalizationsDelegate
|
||||||
|
extends LocalizationsDelegate<StreamChatLocalizations> {
|
||||||
|
const _StreamChatLocalizationsDelegate();
|
||||||
|
|
||||||
|
@override
|
||||||
|
bool isSupported(Locale locale) =>
|
||||||
|
kStreamChatSupportedLanguages.contains(locale.languageCode);
|
||||||
|
|
||||||
|
@override
|
||||||
|
Future<StreamChatLocalizations> load(Locale locale) =>
|
||||||
|
GlobalStreamChatLocalizations.load(locale);
|
||||||
|
|
||||||
|
@override
|
||||||
|
bool shouldReload(_StreamChatLocalizationsDelegate old) => false;
|
||||||
|
|
||||||
|
@override
|
||||||
|
String toString() => 'StreamChatLocalizations.delegate('
|
||||||
|
'${kStreamChatSupportedLanguages.length} locales)';
|
||||||
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
/// Localizations for the StreamChat Flutter library.
|
||||||
|
library stream_chat_localization;
|
||||||
|
|
||||||
|
export 'src/stream_chat_localizations.dart';
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
name: stream_chat_localizations
|
||||||
|
description: A new Flutter project.
|
||||||
|
version: 0.0.1
|
||||||
|
homepage:
|
||||||
|
|
||||||
|
environment:
|
||||||
|
sdk: ">=2.12.0 <3.0.0"
|
||||||
|
flutter: ">=1.17.0"
|
||||||
|
|
||||||
|
dependencies:
|
||||||
|
flutter:
|
||||||
|
sdk: flutter
|
||||||
|
flutter_localizations:
|
||||||
|
sdk: flutter
|
||||||
|
stream_chat_flutter:
|
||||||
|
path: ../stream_chat_flutter
|
||||||
|
|
||||||
|
dev_dependencies:
|
||||||
|
flutter_test:
|
||||||
|
sdk: flutter
|
||||||
|
|
||||||
|
# For information on the generic Dart part of this file, see the
|
||||||
|
# following page: https://dart.dev/tools/pub/pubspec
|
||||||
|
|
||||||
|
# The following section is specific to Flutter.
|
||||||
|
flutter:
|
||||||
|
|
||||||
|
# To add assets to your package, add an assets section, like this:
|
||||||
|
# assets:
|
||||||
|
# - images/a_dot_burr.jpeg
|
||||||
|
# - images/a_dot_ham.jpeg
|
||||||
|
#
|
||||||
|
# For details regarding assets in packages, see
|
||||||
|
# https://flutter.dev/assets-and-images/#from-packages
|
||||||
|
#
|
||||||
|
# An image asset can refer to one or more resolution-specific "variants", see
|
||||||
|
# https://flutter.dev/assets-and-images/#resolution-aware.
|
||||||
|
|
||||||
|
# To add custom fonts to your package, add a fonts section here,
|
||||||
|
# in this "flutter" section. Each entry in this list should have a
|
||||||
|
# "family" key with the font family name, and a "fonts" key with a
|
||||||
|
# list giving the asset and other descriptors for the font. For
|
||||||
|
# example:
|
||||||
|
# fonts:
|
||||||
|
# - family: Schyler
|
||||||
|
# fonts:
|
||||||
|
# - asset: fonts/Schyler-Regular.ttf
|
||||||
|
# - asset: fonts/Schyler-Italic.ttf
|
||||||
|
# style: italic
|
||||||
|
# - family: Trajan Pro
|
||||||
|
# fonts:
|
||||||
|
# - asset: fonts/TrajanPro.ttf
|
||||||
|
# - asset: fonts/TrajanPro_Bold.ttf
|
||||||
|
# weight: 700
|
||||||
|
#
|
||||||
|
# For details regarding fonts in packages, see
|
||||||
|
# https://flutter.dev/custom-fonts/#from-packages
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
|
|
||||||
|
import 'package:stream_chat_localization/stream_chat_localizations.dart';
|
||||||
|
|
||||||
|
void main() {
|
||||||
|
test('adds one to input values', () {
|
||||||
|
final calculator = Calculator();
|
||||||
|
expect(calculator.addOne(2), 3);
|
||||||
|
expect(calculator.addOne(-7), -6);
|
||||||
|
expect(calculator.addOne(0), 1);
|
||||||
|
});
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user